Получение ограничений от db до EF

Я использую asp.net mvc и EF для своей БД. Я использую инструмент "генерировать из базы данных". все в порядке, но проверка. Я хочу, чтобы проверки соответствовали ограничениям проверки, которые я добавил в db раньше.

это мой запрос создателя таблицы db:

use MagicContact

create table Contacts
(
 ID int primary key not null identity,
 name nvarchar(50),
 last_name nvarchar(50),
 mobile nvarchar(11),
 country int foreign key references Country(ID),
 constraint CX_Contacts_mobile check(mobile like '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or mobile like '0[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
)

сгенерированная модель ниже, и у меня нет моих ограничений:

namespace MVCMajicContacts
{
 using System;
 using System.Collections.Generic;

 public partial class Contact
 {
 public int ID { get; set; }
 public string name { get; set; }
 public string last_name { get; set; }
 public string mobile { get; set; }
 public int country { get; set; }

 public virtual Country Country1 { get; set; }
 }
}

И я не мог найти хороший способ. Спасибо всем.

2 ответа

Я думаю, что это достаточно хорошо. string использует nvarchar (max). Из перспективы хранения нет различий между nvarchar (max) и nvarchar (N) при N <4000.

Для country вас есть ленивая загрузка, и вы можете заставить ее сразу загрузить все. но это выбор. Если вы считаете производительность, сделайте ее нетерпеливой.

Кроме этого, он должен работать, и все в порядке.

Посмотрите: существуют ли какие-либо неудобства для использования nvarchar (MAX)?


Чтобы включить ограничения в вашу модель, вы можете использовать

using System.ComponentModel.DataAnnotations;

Entity Frameworks применяет эти ограничения, как это было наложено DarthVader.

вы можете указать ограничения для каждого свойства модели следующим образом для модели. Не сопоставляйте классы моделей напрямую с базой данных, это не самая лучшая практика. Лучше всего использовать ViewModels, а в моделях просмотра вы можете использовать Constraints следующим образом, используя класс DataAnnotations. ниже приведен пример

public partial class Contact
 {


 [Required]
 [Display(Name="Name")]
 [StringLength(100)]
 public string name { get; set; } 



 }

licensed under cc by-sa 3.0 with attribution.