我是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执行此操作?
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
您可以使用Required
属性根据需要标记属性。
以下是您的示例:
public class Shop
{
int Id { get; set; }
string Name { get; set;
[Required]
Certificate Certificate { get; set; }
}
Here是对不同注释的解释。
答案 2 :(得分: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; }
}