3

我有一个动态数据实体 Web 应用程序,它使用带有 GUID 的数据库作为表的主键。所有 GUID 字段的默认值都设置为 NEWID(),因此 SQL Server 将为任何记录生成新的 GUID。然而,在我的动态数据网站中,在插入新条目页面中,GUID 字段会显示,并且用户需要输入数据。如何防止显示该字段?

4

2 回答 2

3

根据MSDN

“通过使用 Scaffold 属性并将其值设置为 false,您可以像执行任何其他列一样隐藏主键。由于无法识别自动生成的键,因此默认插入页面模板不适用于具有自动主键的表的 EDM除非您为实体创建部分类并应用值为 false 的 Scaffold 属性。”

另外,如果您使用 SQL Server 2005 或更高版本,最好使用“newsequentialid()”作为 Guid 的默认值,因为这样插入效率更高。

于 2009-01-17T23:45:58.763 回答
3

不是正确答案..

在我这样做之后,您可以插入 1 条记录,该记录将获得一个全为零的 GUID。之后,您将根本不会收到任何错误消息,但由于 guid 上的唯一索引约束(当然这是主键),您将无法再插入任何记录。

要真正解决这个问题,您必须编辑 emdx 文件并添加

StoreGeneratedPattern="Identity"

进入“SSDL 内容”注释下的 Guid 属性标签。例子:

   <Property Name="Guid" Type="uniqueidentifier" Nullable="false" StoreGeneratedPattern="Identity"/>

如果您在 Visual Studio 中的设计器中执行此操作,它将在“CSDL 内容”注释下注释属性标签,这不起作用..

使用 Entity Framework 4.0 Visual Studio 10 和 .NET Framework 4.0

于 2011-03-10T16:46:12.593 回答