2012-07-26 67 views
0

我正在定义POCO,与实体框架4.0的Code First功能一起使用。是否有可能定义POCO以这样的方式,当我设置标识列的值,将使用它,当我不这样做,它会自动增加?

我的数据部分来自外部源,并为数据我需要保持标识列值等同于外部源的,我有时需要设置ID自己。但对于相同的实体,我有时没有Id,并希望自动增加行为。

是否有可能定义POCO以这样的方式,当我设置的值,将使用它,当我不这样做,它会自动增加? 根据this mySQL forum answer mySQL应该很好地处理这种情况,但似乎与实体Framwork不...

回答

0

从拉里的回答继,我建议写一个存储过程,它集IDENTITY_INSERT上,插入记录,然后关闭之后。

那么我导入作为函数导入,然后使用该内部也许在实体类型本身的扩展方法,或只是作为对象上下文的功能。

这样你可以一个标准:

var user = new User("John"); 
entities.Add(user); 
entities.SaveChanges(); 

类型的事情,当你要使用的自动递增号,然后使用类似:

entities.CreateUser("John"); // This would be the SP 

你可以有条件地使用这种方式一种方法或其他。这不是自动的,但可以让你使用。

0

我认为你要找的是身份插入。

检查此链接了:Using IDENTITY_INSERT with EF4

至于定义POCO以这样一种方式,它会自动地知道你的意图是什么 - 我不认为这是可能的。在插入时你必须明确地设置它。

我会做的运行对与EF,在这里你可以设置标识插入= ON的表格中的原始SQL,然后将在那里一些线,然后将其设置回掉。

记住要考虑到你的自动递增ID可能最终结束了,你已经在你的手动插入使用,这将在本质上破坏你的程序具有相同的值。

最好的问候,拉里

相关问题