C# 如何在ADO.Net实体模型中将带有外键的表更新为另一个表?
我有两个表,表1有一个主键“CustomizationId”,表2有一个与此匹配的FK CustomizationId。表2没有主键 我正在尝试从基于web的表单添加新记录。我试图将其保存到数据库,但出现错误:C# 如何在ADO.Net实体模型中将带有外键的表更新为另一个表?,c#,entity-framework,ado.net,C#,Entity Framework,Ado.net,我有两个表,表1有一个主键“CustomizationId”,表2有一个与此匹配的FK CustomizationId。表2没有主键 我正在尝试从基于web的表单添加新记录。我试图将其保存到数据库,但出现错误: Customization customization = new Customization(); Code code = new Code(); customization.Name = Customizatio
Customization customization = new Customization();
Code code = new Code();
customization.Name = CustomizationName.Text;
customization.LastUpdated = DateTime.Now;
code.Top = top_js.InnerText;
code.Bottom = bottom_js.InnerText;
//code.CustomizationId = customization.CustomizationId;
customization.Code = code;
entities.AddToCustomizations(customization);
entities.SaveChanges();
当我调用SaveChanges时,无论是否在注释行中添加,我都会收到一个错误
Unable to update the EntitySet 'Code' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.
无法更新EntitySet“code”,因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素。
我如何处理这种情况?我只想在添加自定义项的同时添加代码。“代码”表应将Customizationid设置为自定义设置的PK/标识
有什么想法吗?就EF而言,没有PK的表是一个视图 这意味着您有两个选择:
元素中的类似内容:
插入dbo.TCode(ID,Name)值(@ID,@Name)
一旦您的SSDL中有了修改函数,您就需要进行修改,以便EF根据需要使用它们
根据你的情况,我推荐(1)
希望这有帮助
干杯
亚历克斯
<Function Name="InsertCode" BuiltIn="false" IsComposable="false" >
<CommandText>
INSERT dbo.TCode(ID, Name) VALUES (@ID, @Name)
</CommandText>
<Parameter Name="ID" Type="int" Mode="In" />
<Parameter Name="ID" Type="nvarchar(max)" Mode="In" />
</Function>