Ale*_*tin 1 entity-framework code-first ef-code-first
我有两个实体,用户和反馈,在用户名字段的帮助下,它们之间存在一对多关系。
Feedback --> User
-------- --------
username username
Run Code Online (Sandbox Code Playgroud)
但是,有时反馈可能来自未注册的用户,并且“反馈”上的“用户名”字段将为Null。在这种情况下,由于外键约束,添加反馈将失败。
如何以声明方式或通过Fluent API禁用对关系的外键约束的实施?创建数据库时,默认情况下启用它。
谢谢!
你不需要禁用你的目的外键约束的执行,你只需要允许空值,这就是所谓的外键可选择一个一对多的关系(相对于一个需要的关系,它没有按” t允许外键为NULL值)。
您可以通过以下方式定义此可选关系:
public class Feedback
{
public int Id { get; set; }
[ForeignKey("User")]
public int? UserId { get; set; }
public User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
int?外键具有可空类型使该关系成为可选关系。如果User具有名为的主键属性,则Id您甚至可以省略该[ForeignKey]属性,因为Entity Framework将根据命名约定将其UserId作为User导航属性的外键。
另外,您也可以使用Fluent API代替数据注释:
modelBuilder.Entity<Feedback>()
.HasOptional(f => f.User)
.WithMany() // or WithMany(u => u.Feedbacks)
.HasForeignKey(f => f.UserId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4956 次 |
| 最近记录: |