Как сделать значение ключа сущности назначенным пользователем - PullRequest
0 голосов
/ 26 ноября 2011

Я получаю данные из другой базы данных, которая уже создала уникальные идентификаторы для каждого объекта "пива".Однако, когда я назначаю уникальное значение ключа из удаленной базы данных новому объекту "beer", он заменяется, как только объект вставляется в базу данных.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using BeerRecommender.Models.ViewModels;

namespace BeerRecommender.Models
{
    public class Beer
    {
        public Beer()
        {
            Created = DateTime.Now;
            Updated = DateTime.Now;
        }

    [Key]
    public int ID { get; set; }

    public string Name { get; set; }

    public string Description { get; set; }

    public Brewery Brewery { get; set; }

    public DateTime Created { get; set; }

    public DateTime Updated { get; set; }

    public ICollection<City> Cities { get; set; }

    public ICollection<Tag> Tags { get; set; }

    public Style Style { get; set; }
    }
}

Я использую UnitOfWork шаблон.

UnitOfWork.BeerRepository.Insert(beer);
UnitOfWork.Save();

1 Ответ

1 голос
/ 26 ноября 2011

Как вы уже обнаружили, EF будет генерировать значения для int первичных ключей.Для точной настройки этого поведения необходимо пометить ключ с помощью атрибута DatabaseGenerated (или вы также можете настроить его с помощью метода fluent api ' HasDatabaseGeneratedOption ):

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ID { get; set; }
...