我正在尝试将其中一个表中的主键从int更改为uniqueidentifier。正如标题中所指出的,我正在使用实体框架采用数据库第一种方法。
我采取的过程是从sql designer中的表中删除主键,并将列“itemID”重命名为“item”。
然后我创建了另一个名为“itemID”的列,并将其设置为uniqueidentifier类型,默认为newsequentialid()。
然后我删除了之前重命名为“item”的列,并将“itemID”设置为主键。
然后我回到了visual studio并从数据库做了一个更新模型,这给了我一个错误
错误1错误2019:指定的成员映射无效。 “ShoppingModel.dbFruits”类型中成员'itemID'的类型'Edm.Int32 [Nullable = False,DefaultValue =]'与成员'SqlServer.uniqueidentifier [Nullable = False,DefaultValue =,StoreGeneratedPattern = Identity]'不兼容'ShoppingModel.Store.dbFruits'类型中的'itemID'。
这是我在.tt目录下的模型
public partial class dbFruits
{
public dbFruits()
{
this.dbCart = new HashSet<dbCart>();
}
public int itemID { get; set; }
public string name { get; set; }
public string price { get; set; }
}
答案 0 :(得分:3)
之前我遇到过类似的问题,并发现解决它的方法是从模型中删除表。保存并关闭模型。然后重新打开模型并重新添加表格。
答案 1 :(得分:0)
SQL Server uniqueidentifier
与C#Guid
的数据类型相同。你需要改变
public int itemID { get; set; }
到
public Guid itemID { get; set; }