代码之家  ›  专栏  ›  技术社区  ›  mare

在实体框架中使用uniqueidentifier SQL列类型

  •  5
  • mare  · 技术社区  · 14 年前

    在我使用的Clients表中作为主键和标识 uniqueidentifier 默认值设置为newsequentialid()的列。通过管理工具插入新行将创建ID fine的值。

    AddToClients (例如)。如果已调试,id属性的值将显示零GUID。我没有通过 Guid.NewGuid() 因为我想把它留给 newsequentialid()

    如何在不必在客户端代码中设置GUID的情况下使其工作?

    3 回复  |  直到 14 年前
        1
  •  12
  •   Adam Robinson    14 年前

    你得换衣服 StoreGeneratedPattern Identity . 这将导致EF避免在insert上设置值,然后在insert完成后捕获它。

    this link ). 您可能需要手动编辑.edmx并设置 在存储模型本身中。

        2
  •  0
  •   Community CDub    7 年前

    我也遇到了同样的问题。真的很痛苦。这里有一页关于它的评论,来自微软- http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/aecf14e3-e4c9-439b-88af-23d4353afb9d .

    我的解决方法是创建一个用于插入的存储过程。这个页面有一些关于如何做到这一点的信息- http://thedatafarm.com/LearnEntityFramework/tutorials/using-stored-procedures-for-insert-update-amp-delete-in-an-entity-data-model/ . 到目前为止,我只有一个插入存储过程-没有更新或删除;与本文相反,我没有得到一个模型验证错误。

    修正 EF让我尽可能地检索实体列表,但是当我去获取一个特定实体的实例时,我得到了一个关于缺少更新映射函数的错误。啊!

    为了检索用newsequentialid()生成的插入的UUID,我使用了sqlserver2005引入的“OUTPUT inserted.[column]”技术。例如 Retrieve last row inserted with Uniqueidentifier that it is not IDENTITY . 我在INSERT存储过程中使用了相同的技术来检索使用默认getdate()设置的datetime列。

    唐尼

        3
  •  0
  •   VINICIUS SIN    10 年前

    右键点击你。edmx。使用编码或其他方式的XML文本编辑器打开。

    <