获得从db到EF的约束

时间:2014-08-03 08:38:38

标签: asp.net-mvc entity-framework validation constraints

我正在使用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; }
    }
}

我找不到任何好办法。 谢谢大家。

2 个答案:

答案 0 :(得分:0)

我认为这已经足够了。 string使用nvarchar(max)。从存储角度来看,当n

对于country,您有延迟加载,您可以让它急于一次加载所有内容。但这是一个选择。如果你考虑表现,那就急着。

除此之外,它应该有效,并且很好。

看看: Are there any disadvantages to always using nvarchar(MAX)?

答案 1 :(得分:-1)

要在模型中包含约束,您可以使用

using System.ComponentModel.DataAnnotations;

实体框架应用这些约束,就像DarthVader所做的那样。

您可以为模型首先指定每个模型属性的约束,如下所示。 不要将模型类直接与数据库匹配,这不是最佳实践。最好是使用ViewModels,在视图模型中可以使用 使用DataAnnotations类进行如下约束。 下面是一个例子

public partial class Contact
    {


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



    }