如何使用LINQ将Guid存储在uniqueidentifier SQL字段中?

时间:2014-01-05 14:57:33

标签: c# sql sql-server linq-to-sql guid

我手动创建我的GUID,将其存储到数据库中,如此

Guid EmailToken = Guid.NewGuid;

我尝试将其存储在SQL的uniqueidentifier字段中,其中LINQ类似

using (DBDataContext DB = new DBDataContext()) {
    Member M = new Member { ActEmlGuid = EmailToken };
    DB.Members.InsertOnSubmit(M);
    DB.SubmitChanges();
}

不幸的是,SQL现在具有与我创建的GUID不同的GUID。 为什么会这样?我怎么能克服这个?我不希望SQL为我创建GUID。

以下是SQL字段的属性

enter image description here

2 个答案:

答案 0 :(得分:0)

ok chocol8(grt name btw !!)。

如果您首先使用EF代码,则可以在guid上将以下内容添加到模型中。

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ActEmlGuid { get; set; }

这将启用sqlserver(服务器端)guid生成,从而使您能够按计划使用正确的字段类型。

这是一个棘手的小坚果,因为这很大程度上取决于你与数据库交互的机制,但希望上面的内容将以某种方式作为指导,否则,我的坚果。 ToString()选项(在评论中提到)可能会让你在短期内摆脱困境 - 当然不可取。

[edit] - 如果您没有使用EF,那么您可以更新您的架构(在上面的OP中的属性页面中)并添加:

enter image description here

答案 1 :(得分:-1)

试试这个

Member M = new Member();
M.ActEmlGuid = Guid.NewGuid;
DB.Members.Add(M);
DB.SaveChanges();