实体框架4返回KEY/主键

发布于 2024-10-27 07:47:18 字数 996 浏览 3 评论 0原文

实体框架 4 返回键/主键

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

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 然后我使用 Add 函数从模型浏览器导入并创建复杂类型。

然后,虽然 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()); 

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

Entity Framework 4 Returning KEY/Primary Key

I’m Trying to find a way to Return a Key/Primary Key without having to create a stored procedure to do it for me using:

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

Though Visual Studio 2010 I then Use the Add Function Import From the Model Browser and Create a Complex Type.

Then Though C# i use the Following Code to check its working.

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

I'm simply looking for a better way to return the ID and also being very sure im not going to cause head aches for myself laster on down the track.

If you feel this is not the best way to return the key please let me know.

I have Tried it this way but returns 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()); 

I should also mention that the DB is looking after the Primary Keys not my application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南汐寒笙箫 2024-11-03 07:47:18

如果您在实体中将 StoreGeneeratedPattern 正确设置为 Identity,并且数据库中有自动生成的 PK,则 EF 将在每次保存更改后填充插入实体的 Id。查看这篇文章 了解商店生成的模式。

If you correctly setup StoreGeneratedPattern to Identity in your entity and if you have autogenerated PKs in the database, EF will fill the Ids of your inserted entities after each save changes. Check this article to understand store generated pattern.

怪我鬧 2024-11-03 07:47:18

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

Normally PKs are dealt with as a particular property on an EF Object EntityKey. You are probably best to have a look at EntityKeys.

爱的那么颓废 2024-11-03 07:47:18

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

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

不过,我不确定这是否适用于存储过程。顺便问一下,在这种情况下您使用存储过程有什么特殊原因吗?

The usual way is to set the StoreGeneratedPattern property of the PK column in your model as Identity. Or if you are using code-first, annotate the property with:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

I am not sure whether this works with sprocs, though. By the way, any special reason you are using sprocs in this case?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文