0

我是 Entity Framework 的新手,即将使用 EF5 Code First 开始一个新的 ASP.NET MVC 项目。

我在尝试 EF 时注意到,在我的数据库中为我自动生成的外键字段允许 NULL,我想知道如何在代码中配置内容,以便它不允许这些字段为空?

示例(为简洁而编辑):

public class Shop
{
    int Id { get; set; }
    string Name { get; set;

    // Navigation Property.
    Certificate Certificate { get; set; } // ******
}

public class Certificate
{
    int Id { get; set; }
    string Descrip { get; set; }
}

我突出显示的导航属性会自动在数据库的 Shop 表中生成一个字段,称为 Certificate_Id,但它允许 NULL,我想指定它不应该允许 NULL。

如何使用 Fluent API 做到这一点?

4

3 回答 3

2

试试这样:

public class TempContext : DbContext
{
    public DbSet<Shop> Shops { get; set; }
    public DbSet<Certificate> Certificates { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Shop>().HasRequired(x => x.Certificate);
    }
}
于 2013-08-06T08:06:14.580 回答
1

您可以Required根据需要使用该属性来标记属性。

MSDN

这是您的示例:

public class Shop
{
    int Id { get; set; }
    string Name { get; set;

    [Required]
    Certificate Certificate { get; set; }
}

是对不同注释的解释。

于 2013-08-06T07:42:31.213 回答
0

尝试这个:

public class Shop
{
    int Id { get; set; }
    string Name { get; set; }

    [Required]
    int CertId { get; set; }

    // Navigation Property.
    [ForeignKey("CertId")]
    Certificate Certificate { get; set; } // ******
}

public class Certificate
{
    int Id { get; set; }
    string Descrip { get; set; }
}
于 2013-08-06T11:21:42.087 回答