rid*_*nsb 8 entity-relationship fluent-interface ef-code-first
我有以下课程:
public class User
{
public Guid Id { get; set; }
public string Name { get; set; }
public Couple Couple { get; set; }
}
public class Couple
{
public Guid Id { get; set; }
public User Groom { get; set; }
public User Bride { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
重点:
Bride和Groom属性是必需的User课堂上,这是Couple必需的OnModelCreating中的DbContext
modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredPrincipal();
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent();
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent();
Run Code Online (Sandbox Code Playgroud)
但我不能被要求!
所有文件在数据库中都为null!
如何将数据库中的字段设为非空? 如果可能,使用API Flient.
它应该是这样的:
modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredDependent();
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent();
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent();
Run Code Online (Sandbox Code Playgroud)
WithRequiredDependent的工作原理:配置所需的关系:在关系的另一端没有导航属性.正在配置的实体类型将是依赖项,并包含主体的外键.关系所针对的实体类型将是关系中的主体.
含义:让我们在这里考虑你的第一行代码.它在正在配置的实体(用户)中创建一个外键,使其成为依赖并使关系的另一面(Couple) Principal
重要提示: 您认为您想要的配置是否会产生死锁?我没有测试上面的代码,但是这个配置似乎对我来说是一个僵局,所以我不确定EF是否允许你创建它.用户必须需要一对夫妇,夫妻必须需要相同的用户.
| 归档时间: |
|
| 查看次数: |
11681 次 |
| 最近记录: |