【问题标题】:getting Guid from database从数据库获取指导
【发布时间】:2015-05-29 20:16:09
【问题描述】:

发生了一些奇怪的事情,我无法再使用 .net 实体模型从我的 mysql 数据库中获取 GUID 类型。

不久前,我创建了一个使用 Guid 作为 ID 的数据库。我使用实体框架创建了与该数据库的连接,一切正常。

但是我前段时间丢失了数据库,我不得不重新创建它,但是现在,由实体框架模型创建的类有一个字符串作为 ID,而不是以前的 GUID。

我需要在我的 mysql 数据库中创建我的 ID 的类型,以便我可以简单地执行以下操作:

Image.ID = Guid.NewGuid();
EntityModel.Image.Add(Image);
EntityModel.SaveChanges();

这曾经可以正常工作,现在我(显然)收到一个错误:“无法将类型 'System.Guid' 隐式转换为 'string'”

我不记得我曾经是如何做到的,我想知道这里的人是否可以提供帮助。 我确实读过有关 UUID() 的信息,但我不是这样做的。 不知何故,我感觉 mysql 更新了,不知何故它不再可能,但这对我来说似乎很奇怪。

我确实对此进行了研究,并看到很多人建议在 mysql 中将 id 设为二进制类型并将 Guid 转换为二进制形式并存储它。我希望不要编写一个转换类来将 Guid 隐式转换为二进制...

【问题讨论】:

    标签: c# mysql linq entity-framework


    【解决方案1】:

    如果您使用 'Old Guids=true',Binary(16) 应该与较新的连接器一起使用,否则它想使用 char(36)

    【讨论】:

    • 真的吗? xD 如果我想这样做,我会这样做,但我没有。如果我这样做,这意味着我首先必须从我的 guid 为每条语句创建字符串。它曾经在没有 .tostring() 的情况下工作,但可能最糟糕的事情是从我的字符串创建 guid...
    • 对不起,你的问题很混乱。尝试将该字段设置为 char(36) 或 binary(16) 并确保您的连接字符串中包含“Old Guids=true”。这就是你要找的东西吗?
    • 旧 GUIDS,我想这就是我要找的东西,让我测试一下,抱歉这个令人困惑的问题。
    • Binary(16) 如果您使用 'Old Guids=true' 应该与较新的连接器一起使用,否则我想它想使用 char(36)。在此处阅读更多信息:dev.mysql.com/doc/connector-net/en/…
    • 你太棒了,我设置了 Old Guids=true 但 varchar(36) 仍然是一个字符串,它必须是 Binary(16)。如果你改变你的答案,我会接受它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 2017-08-26
    • 2013-05-16
    • 2013-08-29
    • 2014-10-03
    相关资源
    最近更新 更多