C# 将新实体添加到数据库中会得到;标识“插入设置为关闭”;错误
我创建一个新的域实体,将其映射到持久性实体并将其保存到数据库。这给了我一个sql错误,如下所示 SqlException:当identity\u insert设置为OFF时,无法在表“DefaultPageContent”中为identity列插入显式值 我检查了表上的标识,这是真的,我检查了设计器,所有表的标识都是真的,如下所示:C# 将新实体添加到数据库中会得到;标识“插入设置为关闭”;错误,c#,sql,entity-framework,.net-core,automapper,C#,Sql,Entity Framework,.net Core,Automapper,我创建一个新的域实体,将其映射到持久性实体并将其保存到数据库。这给了我一个sql错误,如下所示 SqlException:当identity\u insert设置为OFF时,无法在表“DefaultPageContent”中为identity列插入显式值 我检查了表上的标识,这是真的,我检查了设计器,所有表的标识都是真的,如下所示: modelBuilder.Entity("Namespace.Models.PageContent", b => { b.Proper
modelBuilder.Entity("Namespace.Models.PageContent", b =>
{
b.Property<int>("IdPageContent")
.ValueGeneratedOnAdd()
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
});
域模型和持久性模型上的Id属性,并分别
如果数据库中不存在页面内容,则在此处创建页面内容
private async Task UpdateCustomerPageContent(UpdateCustomerPageContentCommand request, CancellationToken cancellationToken)
{
var customerPage = await _unitOfWork.CustomerPages.FindById(request.CustomerPageId);
var content =
customerPage.PageContent.FirstOrDefault(x => x.IdOrganization.Equals(request.CustomerOrganizationId));
var settings =
customerPage.CustomerPageSettings.First(x => x.IdOrganization.Equals(request.CustomerOrganizationId));
settings.UseDefaultContent = false;
if (content == null)
{
content = new Domain.PageContent();
content.IdOrganization = request.CustomerOrganizationId;
content.LastUpdatedBy = "noname"; //TODO: Getfrom UPN Claim
content.CustomerPage = customerPage;
}
content.HtmlContent = request.HtmlString;
await _unitOfWork.PageContent.InsertOrUpdate(content, cancellationToken);
await _unitOfWork.SaveChangesAsync(cancellationToken);
}
这是insertOrupdate方法,映射也在其中发生
public async Task InsertOrUpdate(Domain.PageContent pageContent, CancellationToken cancellationToken = default)
{
var entity = _mapper.Map<Models.PageContent>(pageContent);
if (pageContent.IdPageContent == default)
{
await _context.PageContent.AddAsync(entity, cancellationToken);
}
else
{
_context.Entry(entity).State = EntityState.Modified;
}
}
这里是简单的映射配置,考虑到一切都是相同的
public PageContentProfile()
{
CreateMap<Models.PageContent, Domain.PageContent>();
CreateMap<Domain.PageContent, Models.PageContent>();
}
publicpagecontentprofile()
{
CreateMap();
CreateMap();
}
由于标识为true,因此创建和添加新实体不应出现错误。两种型号上的Id都是“0”,如果这意味着什么的话。例外情况提到表
DefaultPageContent
。它是存储PageContent
的地方还是不同的实体?它是同一个地方,很抱歉造成混淆。如果您将断点设置为此处:If(PageContent.IdPageContent==default)
是实体。IdPageContent
此处也是0?异常会提到表DefaultPageContent
。它是存储PageContent
的地方还是不同的实体?它是同一个地方,很抱歉造成混淆。如果将断点设置为此处:If(PageContent.IdPageContent==默认值)
是Entity.IdPageContent
这里也是0?
public class PageContent
{
public int IdPageContent { get; set; }
public long IdOrganization { get; set; }
public string HtmlContent { get; set; }
public string LastUpdatedBy { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime UpdatedDate { get; set; }
public CustomerPage CustomerPage { get; set; }
}
public PageContentProfile()
{
CreateMap<Models.PageContent, Domain.PageContent>();
CreateMap<Domain.PageContent, Models.PageContent>();
}