我正在从另一个已为每个“啤酒”实体创建唯一ID的数据库中检索数据。但是,当我将远程数据库中的唯一键值分配给新的“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();
答案 0 :(得分:1)
正如您已经发现的,EF将为int
主键生成值。要微调此行为,您需要使用DatabaseGenerated属性标记您的密钥(或者您也可以使用fluent api的HasDatabaseGeneratedOption方法对其进行配置):
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }