实体框架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());
我还应该提到数据库正在管理主键而不是我的应用程序。
答案 0 :(得分:1)
如果您在实体中正确设置StoreGeneratedPattern
到Identity
,并且您在数据库中有自动生成的PK,则EF将在每次保存更改后填充插入实体的ID。检查this article以了解商店生成的模式。
答案 1 :(得分:0)
通常的方法是将模型中PK列的StoreGeneratedPattern属性设置为Identity。或者,如果您使用的是代码优先,请使用以下命令注释属性:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
我不确定这是否适用于sprocs。顺便说一句,在这种情况下你使用sprocs的任何特殊原因?
答案 2 :(得分:0)
通常,PK会作为EF对象EntityKey上的特定属性处理。你可能最好看看EntityKeys。