2013-04-22 38 views
0

我通过Entity Framework 5插入相关行时遇到了问题。我将它与RIA Services和.NET Framework 4.5一起使用。数据库系统是MySQL 5.6。连接器版本是6.6.5。使用存储过程和auto_increment字段插入实体框架相关对象

它引发了外键约束异常。

我选择了简化模型来揭露我的问题。

LDM

提供商(ID,姓名,地址)

条(ID,名称,价格)

LinkToProvider(PROVIDER_ID,article_id的,provider_price)

// Id是auto_increment列。

首先我创建一个新的文章实例。我将LinkToProvider的一个实例添加到文章的LinkProvider集合中。在这个LinkToProvider对象中,产品本身被引用。现有的提供者也被引用。 然后我提交更改。从DataViewModel

this.CurrentArticle = new Article(); 

... 

this.CurrentArticle.LinkToProvider.Add(

new LinkToProvider { Article = this.CurrentArticle, Provider = 
this.ProviderCollection.CurrentItem } 

); 

... 

this.DomainContext.articles.Add(this.CurrentArticle); 

this.DomainContext.SubmitChanges(); 

注意

示例代码:

在的游戏内实体框架插入产品做好。然后它失败,因为它试图在LinkToPrivder表中插入一行,并使用未知的产品id,如下所示。

INSERT 
INTO LinkToProvider 
VALUES(5, 0, 1.2) 

它把0代替生成的ID。

但是,如果我单独插入产品而没有任何关系,产品ID将在数据库中正确生成。

任何帮助将不胜感激! 谢谢。

回答

0

我找到了答案。 您需要结果绑定从存储过程的ID列在EDMX模型

所以我要修改我的存储过程添加的指令上显示最后instered ID为项目表标准输出。

SELECT LAST_INSERT_ID() AS NewArticleId; 

然后我用存储过程返回的列名的名称添加了绑定。这是NewArticleId。

它在这里解释:http://learnentityframework.com/LearnEntityFramework/tutorials/using-stored-procedures-for-insert-update-amp-delete-in-an-entity-data-model/