我有一个动态数据实体Web应用程序,它使用带有GUID的数据库作为表的主键。所有GUID字段的默认值都设置为NEWID(),因此SQL Server将为任何记录生成新的GUID。但是,在我的动态数据网站中,在插入新条目页面中,GUID字段显示,并且用户希望输入数据。我怎么能阻止显示该字段?
答案 0 :(得分:3)
根据MSDN:
“您可以使用Scaffold属性隐藏主键,并将其值设置为false。由于无法识别自动生成的键,因此默认的插入页面模板不适用于具有EDM的表格自动主键,除非您为实体创建分部类并应用值为false的Scaffold属性。“
另外,如果您使用的是SQL Server 2005或更高版本,则最好使用“newsequentialid()”作为Guid的默认值,因为它更有效地插入。
答案 1 :(得分:3)
不正确答案..
执行此操作后,我执行此操作,您可以插入1条记录,该记录将获得全部为零的GUID。之后你根本就不会收到任何错误信息,但你将无法再插入任何记录,因为guid上有唯一的索引约束(当然这是主键)。
要真正解决此问题,您必须编辑emdx文件并添加
StoreGeneratedPattern="Identity"
进入“SSDL内容”评论下的Guid属性标记。例如:
<Property Name="Guid" Type="uniqueidentifier" Nullable="false" StoreGeneratedPattern="Identity"/>
如果yhou在visual studio中的设计器中执行此操作,它将在“CSDL内容”注释下注释属性标记,该注释不起作用。
使用的Entity Framework 4.0 Visual Studio 10和.NET framework 4.0