Entity Framework 4 Возвращающий ключ / первичный ключ - PullRequest
0 голосов
/ 28 марта 2011

Entity Framework 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 я затем использую Добавить функцию Импорт из браузера модели и создаю сложный тип.

Затем, хотя 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 ]

1 голос
/ 28 марта 2011

Если вы правильно настроили StoreGeneratedPattern на Identity в своей сущности и если у вас есть автоматически сгенерированные PK в базе данных, EF будет заполнять идентификаторы вставленных вами сущностей после каждого изменения сохранения.Проверьте эту статью , чтобы понять сгенерированный магазин шаблон.

0 голосов
/ 28 марта 2011

Обычно PK рассматриваются как особые свойства объекта EF EntityKey .Возможно, вам лучше всего взглянуть на EntityKeys.

0 голосов
/ 28 марта 2011

Обычный способ - установить для свойства StoreGeneratedPattern столбца PK в вашей модели значение Identity.Или, если вы используете code-first, аннотируйте свойство с помощью:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

Я не уверен, работает ли это с sprocs, хотя.Кстати, какая особая причина, по которой вы используете sprocs в этом случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...