[英]How to ignore Foreign Key Constraints in Entity Framework Core SQLite database?
[英]How does Entity Framework handle Default constraints in the database table?
我正在编写无法完成的代码,因为这是一个漫长而繁琐的过程。 我的任务是向现有数据库添加新表,更新模型的.edmx并编写一种方法,以通过c#后端代码向表中添加新行。
在我的情况下,我的表上有2个默认约束
SomeTable
------------
ID INT IDENTITY (1,1) PRIMARY KEY CLUSTERED,
SomeDate DATETIME2 NOT NULL DEFAULT GETDATE(),
SomeOtherField VARCHAR(1024) NOT NULL DEFAULT ''
使用此表的.edmx模型,我将SomeDate的StoreGeneratedPattern
设置为Computed
。 我还手动在SSDL
对其进行了双重检查,以确保computed StoreGeneratedPattern
属性位于SomeTable
实体的SomeDate
字段中。
据我所知,不确定何时有以下代码
public void AddSomeRow(...)
{
SomeDbContext context = new SomeDbContext;
var table = new SomeTable { SomeOtherField = "Value" };
context.SomeTables.Add(table);
context.SaveChanges();
}
我相信SomeDate
字段将设置为默认约束(因为尚未在实体中填充该字段)。 这是真的吗?
对SomeOtherField
上面列出的相同步骤, 我是否仍可以手动为它提供一个值(该值而不是默认约束出现在该字段中)或忽略它(默认约束将设置在该字段中)?
这个问题很难解释,如果不合理,我深表歉意
StoreGeneratedPattern
表示该值始终由数据库生成,因此不允许您对其进行修改。 即,仅对数据库计算列有意义。
至少在EF 6.1之前,还没有直接的方法来支持数据库默认值。 您唯一可以做的就是将默认值移出数据库,并在模型(或代码优先)端生成它们。 您会发现一些可行的方法,但是在某些情况下(特别是对于N层应用程序)它们并不安全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.