C# 成员映射在实体框架中无效
我正在Azure上学习实体框架,ID字段必须是C# 成员映射在实体框架中无效,c#,entity-framework,C#,Entity Framework,我正在Azure上学习实体框架,ID字段必须是nvarchar(255)。当我连接到DB以获取模型时,它将ID字段下拉为type string,这给了我插入新记录时的问题。解决方案是将类型字符串切换为类型Guid。然后,我可以提交一条新记录,“默认”sql值将生成新的Guid 然而,在我浏览了模型并将id从字符串重置为Guid后,我得到了以下消息,这对我来说没有多大意义: 错误:指定的成员映射无效。“LearnModel.AdminList”类型中成员“id”的类型“Edm.Guid[Nulla
nvarchar(255)
。当我连接到DB以获取模型时,它将ID字段下拉为type string,这给了我插入新记录时的问题。解决方案是将类型字符串切换为类型Guid。然后,我可以提交一条新记录,“默认”sql值将生成新的Guid
然而,在我浏览了模型并将id从字符串重置为Guid后,我得到了以下消息,这对我来说没有多大意义:
错误:指定的成员映射无效。“LearnModel.AdminList”类型中成员“id”的类型“Edm.Guid[Nullable=False,DefaultValue=]”与“LearnModel.Store.AdminList”类型中成员“id”的“SqlServer.nvarchar[Nullable=False,DefaultValue=,MaxLength=255,Unicode=True,FixedLength=False]”不兼容
我认为可能是Unicode=true给了我这个问题,但我没有看到在VS中的模型中可以设置这个。我发现另一篇文章提到了进入并编辑edmx以添加Unicode=true,但这将在下次验证模型时被覆盖
有人知道我在这里遇到了什么吗?我以前遇到过类似的问题,通过以下步骤解决了这个问题:
id
identifier更改为uniqueidentifier
,如下所示:
ALTER TABLE AdminList ALTER COLUMN id uniqueidentifier
EntityType
元素,然后更改id
列的Property
元素,其数据类型与DB中定义的相同,如下所示:
<EntityType Name="AdminList">
<Property Name="id" Type="uniqueidentifier" Nullable="False" />
</EntityType>
注意:如果您希望在提交记录时避免EF设置id
列值,可以使用
(请参阅)我以前也遇到过类似的问题,可以通过以下步骤解决:
id
identifier更改为uniqueidentifier
,如下所示:
ALTER TABLE AdminList ALTER COLUMN id uniqueidentifier
EntityType
元素,然后更改id
列的Property
元素,其数据类型与DB中定义的相同,如下所示:
<EntityType Name="AdminList">
<Property Name="id" Type="uniqueidentifier" Nullable="False" />
</EntityType>
注意:如果您希望在提交记录时避免EF设置id
列值,可以使用
(请参阅)如果您使用的是EDMX,请尝试将
id
列类型更改为“uniqueidentifier”,然后重新生成模型(可能需要删除并重新添加EDMX文件以生成正确的数据类型)。如果可以,我会接受这个答案!无论如何,这不是一项快速的任务。。。正如你所说,我还必须删除模型并重新创建它。感谢您的帮助。如果您使用的是EDMX,请尝试将id
列类型更改为“uniqueidentifier”,然后重建模型(可能需要删除并重新添加EDMX文件以生成正确的数据类型)。如果可以,我会接受这个答案!无论如何,这不是一项快速的任务。。。正如你所说,我还必须删除模型并重新创建它。感谢您的帮助。作为补充说明,我很惊讶MS建议我将ID列创建为nvarchar()。它应该是uniqueidentifier。作为补充说明,我很惊讶MS建议我将ID列创建为nvarchar()。它应该是唯一标识符。