我正在使用asp.net mvc和EF作为其数据库。我使用“从数据库生成”工具。 一切都好,但验证。我希望验证符合我之前添加到db的检查约束。
这是我的db table creator查询:
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; }
}
}
我找不到任何好办法。 谢谢大家。
答案 0 :(得分:0)
我认为这已经足够了。 对于 除此之外,它应该有效,并且很好。 看看:
Are there any disadvantages to always using nvarchar(MAX)? string
使用nvarchar(max)。从存储角度来看,当n country
,您有延迟加载,您可以让它急于一次加载所有内容。但这是一个选择。如果你考虑表现,那就急着。
答案 1 :(得分:-1)
要在模型中包含约束,您可以使用
using System.ComponentModel.DataAnnotations;
实体框架应用这些约束,就像DarthVader所做的那样。
您可以为模型首先指定每个模型属性的约束,如下所示。 不要将模型类直接与数据库匹配,这不是最佳实践。最好是使用ViewModels,在视图模型中可以使用 使用DataAnnotations类进行如下约束。 下面是一个例子
public partial class Contact
{
[Required]
[Display(Name="Name")]
[StringLength(100)]
public string name { get; set; }
}