0
使用EFCore,该模型具有一个带有外键约束的表,它引用另一个表,但该列为,可为空。模型是这样的:DbSet.Add忽略未设置的属性
public class Order
{
[Key]
public int Id { get; set; }
public int Code { get; set; }
public int Amount { get; set; }
... // other fields
}
public class OrderCode
{
[Key]
public int Id { get; set; }
public int Code { get; set; }
public string Description { get; set; }
}
Order o = new Order { Amount = 1 }; // Code is not set and default NULL in DB
orders.Add(o);
db.SaveChanges(); // failure
所以对一些情况下,Code
是空的,它是默认NULL
在数据库中,但是当我通过DbSet.Add
添加的对象,它抛出一个异常:
Microsoft.EntityFrameworkCore .DbUpdateException:更新条目时发生错误。详情请参阅内部例外。 ---> System.Data.SqlClient.SqlException:INSERT语句与FOREIGN KEY约束“FK_Orders_Code”冲突。数据库“Store”中发生冲突,表“dbo.OrderCode”,列'Id'。
看来EFCore会尝试在插入语句中添加此字段,即使它没有设置,那么有什么办法可以避免这种情况?
但随后在使用此字段的代码中的任何地方都需要更新为foo.Value,并且还要使用foo.HasValue进行检查。有更好的选择吗? – fluter