实体框架4返回KEY /主键

时间:2011-03-28 01:46:42

标签: c# entity-framework entity-framework-4 primary-key key

实体框架4返回KEY /主键

我正在尝试找到一种返回密钥/主密钥的方法,而无需使用以下方法创建存储过程来执行此操作:

CREATE PROCEDURE [dbo].[UserRecords]
(
    @Name   varchar(10)
) AS

-- INSERT the new record
INSERT INTO MyTable (Name)
VALUES(@Name)

-- Now return the InventoryID of the newly inserted record
SELECT SCOPE_IDENTITY() AS ID

虽然Visual Studio 2010然后使用模拟浏览器中的添加功能导入并创建复杂类型。

然后,虽然C#我使用以下代码来检查它的工作情况。

 SQL_DB_Entities DB= new SQL_DB_Entities();
            var ReturnValue = DB.UserRecords("BOB").First();
            Console.Write(ReturnValue.ID);
            Console.Read();

我只是想找一个更好的方式来返回身份证,并且非常确定我不会在赛道上给自己造成头痛。

如果您认为这不是退回钥匙的最佳方式,请告诉我。

我试过这种方式但是返回0

SQL_DB_Entities DB = new SQL_DB_Entities();
User UserObject = new User{Name = “BOB”};
DB.AddToUserTable(UserObject);
DB.SaveChanges(): 
Int key = UserObject.ID;
Console.WriteLine(key.ToString()); 

我还应该提到数据库正在管理主键而不是我的应用程序。

3 个答案:

答案 0 :(得分:1)

如果您在实体中正确设置StoreGeneratedPatternIdentity,并且您在数据库中有自动生成的PK,则EF将在每次保存更改后填充插入实体的ID。检查this article以了解商店生成的模式。

答案 1 :(得分:0)

通常的方法是将模型中PK列的StoreGeneratedPattern属性设置为Identity。或者,如果您使用的是代码优先,请使用以下命令注释属性:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

我不确定这是否适用于sprocs。顺便说一句,在这种情况下你使用sprocs的任何特殊原因?

答案 2 :(得分:0)

通常,PK会作为EF对象EntityKey上的特定属性处理。你可能最好看看EntityKeys。