我们有一个带有多个表的 SQL Server 2008 R2 数据库,每个表都有许多触发器。在其中一列中,我们将调用此 Person.Age 我们有一个默认值,因此如果我没有明确提供一个值,它默认为“18”。
create table PERSON
(
id int IDENTITY(1,1) PRIMARY KEY,
age char(2) DEFAULT '18',
Name char(40),
);
我正在使用 EntityFramework 4.0(也尝试过 5.0)和 Visual Studio 2010 来加载并从数据库中选择。每当我使用以下语句插入表时,它都会插入一行,但它没有完成默认值:
var person = new Person
{
Name = "Peter"
};
using (var ctx = new MyEntities())
{
ctx.PERSON.AddObject(person);
ctx.SaveChanges();
}
这将导致一行名称为 Peter,但年龄将设置为空 - 而不是我的默认值 18。
当我刷新/加载我的 EDMX 文件时,我似乎只能导入简单的表和视图,并且似乎没有导入属性的选项 - 尽管我会认为这是默认完成的?任何想法为什么默认属性没有触发?
此外,我在 SQL Server 中定义了触发器,因此当将新行插入 PERSON 时,会更新另一个表。如果我直接对数据库运行 SQL,这同样有效,但如果我使用 EntityFramework 通过 Visual Studio 执行则不起作用。
谢谢,