在表上自动增量,实体框架会在保存更改前反映出来吗?

时间:2010-09-04 17:42:06

标签: c# asp.net linq entity-framework

我的设置是这样的;首先,我要定义几个新行。

newCompany = new company
             {
                companyInfo = value.company_info,
                companyName = value.company_name,
                organizationNumber = value.company_orgnr
             };
newContract = new contract
              {
                 contractName = value.contract_name
              };

然后我在contractToCompany表中定义一个新行:

contracttocompany newContractToCompany = new contracttocompany { company_idCompany = newCompany.idCompany, contract_idContract = newContract.idContract };

然后我保存更改

context.SaveChanges();

我在所有表上都有自动增量id列。这是正确的命令,还是newContract.id和newCompany.id == default或null?

2 个答案:

答案 0 :(得分:1)

基本上,不。您应该将它们添加到(彼此)导航属性中。

或者也许是ContractToCompany表的(导航属性),但为什么它仍然作为表/实体“可见”? EF通常应该为您隐藏。

答案 1 :(得分:1)

您的模型不是以EF v1期望的方式构建的。如果您想这样做,首先必须添加公司和联系人并保存更改。此操作将重新加载这些实体的ID,您可以定义contactToCompany并再次保存更改。

EF v1期望您以导航属性的方式建模M:N关系。您可以将M:N关系公开为两个1:N关系来分隔链接实体,但您必须手动执行此操作。您仍然必须使用导航属性而不是外键。你是如何创建映射的?