数据库首先将主键从int更改为uniqueidentifier

时间:2016-04-19 09:21:07

标签: sql-server entity-framework ef-database-first

我正在尝试将其中一个表中的主键从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; }
}

2 个答案:

答案 0 :(得分:3)

之前我遇到过类似的问题,并发现解决它的方法是从模型中删除表。保存并关闭模型。然后重新打开模型并重新添加表格。

答案 1 :(得分:0)

SQL Server uniqueidentifier与C#Guid的数据类型相同。你需要改变

public int itemID { get; set; }

public Guid itemID { get; set; }