【发布时间】:2020-05-19 14:02:12
【问题描述】:
自从我从 .netcore2.2 更新到 .netcore3.1 后,我遇到了新的奇怪异常“无效的列名 'TenantTemplateTypeID1'”。请不要使用不应该出现在这里的“1”。代码中的任何地方都没有 TenantTemplateTypeID1,所以我假设它是由 EF 核心生成的。
EF 核心版本:3.1.1
例外:
Exception: Invalid column name 'TenantTemplateTypeID1'.
Invalid column name 'TenantTemplateTypeID1'.
Invalid column name 'TenantTemplateTypeID1'.
Invalid column name 'TenantTemplateTypeID1'.
StactTrace: at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
查询:
var t = engineCtx.TenantTemplates
.AsNoTracking()
.Include(tt => tt.TenantTemplateParameters)
.Include(tt => tt.TenantTemplateStyles)
.FirstOrDefault(tt => tt.TenantTemplateTypeID == tenantTemplateTypeID);
数据库上下文
modelBuilder.Entity<Db.Model.TenantTemplate>(entity =>
{
entity.HasKey(e => e.TenantTemplateTypeID)
.HasName("PK_TenantTemplate_TenantTemplateTypeID");
entity.ToTable("TenantTemplates", "templateEngine");
entity.Property(e => e.TenantTemplateTypeID)
.HasColumnName("TenantTemplateTypeId");
//... not related rows removed
entity.HasMany(e => e.TenantTemplateParameters)
.WithOne(e => e.TenantTemplate)
.HasConstraintName("FK_TenantTemplate_TenantTemplateParameters")
.OnDelete(DeleteBehavior.Restrict);
entity.HasMany(e => e.TenantTemplateStyles)
.WithOne(e => e.TenantTemplate)
.HasConstraintName("FK_TenantTemplate_TenantTemplateStyles")
.OnDelete(DeleteBehavior.Restrict);
});
DB 模型只包含没有任何属性的属性。
public partial class TenantTemplate
{
public long TenantTemplateTypeID { get; set; }
// not related rows removed
public virtual ICollection<TenantTemplateParameter> TenantTemplateParameters { get; set; }
public virtual ICollection<TenantTemplateStyle> TenantTemplateStyles { get; set; }
}
// TenantTemplateStyle is exacly the same (just PK has a different name)
public class TenantTemplateParameter
{
public long TenantTemplateParameterID { get; set; }
public long TenantTemplateTypeID { get; set; }
// rows removed
public virtual TenantTemplate TenantTemplate { get; set; }
}
有人知道一些overround吗?谢谢...
【问题讨论】:
-
您能发帖
TenantTemplateParameter或TenantTemplateStyle课程吗?问题应该就在那里。 -
问题已更新...
标签: entity-framework entity-framework-core ef-core-3.1