C# 为业务逻辑扩展EF实体会引发映射异常
我的数据库中有一个模型。我有一个扩展这个模型的类,C# 为业务逻辑扩展EF实体会引发映射异常,c#,.net,entity-framework,C#,.net,Entity Framework,我的数据库中有一个模型。我有一个扩展这个模型的类,assessmentimportorror评估导入错误未映射到表。它有一个[NotMapped]属性。当我尝试选择或插入一个importorror(不是assessmentimportorror…)时,我得到以下异常: 例外情况: EntityFramework.MappingAPI.dll中发生类型为“System.exception”的异常,但未在用户代码中处理 其他信息:在上下文“DAL.HTTrans.Model.HTTransDB”中找
assessmentimportorror
<代码>评估导入错误未映射到表。它有一个[NotMapped]
属性。当我尝试选择或插入一个importorror
(不是assessmentimportorror
…)时,我得到以下异常:
例外情况:
EntityFramework.MappingAPI.dll中发生类型为“System.exception”的异常,但未在用户代码中处理
其他信息:在上下文“DAL.HTTrans.Model.HTTransDB”中找不到类型“DAL.SharedModels.AssessmentImportError”
模型:
[NotMapped]
public class AssessmentImportError : ImportError
{
public string APN { get; set; }
}
public partial class ImportError : Frameworks.Interfaces.IImportError
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long ErrorId { get; set; }
[Required]
[MaxLength(200)]
[Index("IX_TableName_RecordId", 1)]
public string TableName { get; set; }
// ... deleted code
}
批量插入:
private static void SaveErrors(List<IImportError> errors, int batchID)
{
// Casting from IImportError to ImportError. They are already an ImportError though.
List<ImportError> castedErrors = errors.Select(e => (ImportError)e).ToList();
using (var db = new HTTransDB())
{
foreach (var e in castedErrors)
{
e.BatchId = batchID;
}
db.BulkInsert(castedErrors);
errors.Clear();
}
}
private static void SaveErrors(列表错误,int-batchID)
{
//从输入错误到输入恐怖。他们已经是输入恐怖了。
列出castedErrors=errors.Select(e=>(ImportError)e.ToList();
使用(var db=new HTTransDB())
{
foreach(铸造错误中的变量e)
{
e、 BatchId=BatchId;
}
db.壁嵌件(铸造错误);
错误。清除();
}
}
编辑:
如果我将db.BulkInsert(castedErrors)
更改为db.ImportErrors.AddRange(castedErrors)
我不再有问题。这似乎是BulkInsert Nuget包的映射API中的一个错误。此强制转换:
errors.Select(e => (ImportError)e)
仍将返回未映射到DB模型的评估导入错误的列表
您应该做的可能是一种扩展方法(或服务),它可以从评估导入错误映射到所需的导入错误,如下所示:
List<ImportError> castedErrors = errors.Select(e => e.To<ImportError>()).ToList();
List castedErrors=errors.Select(e=>e.To()).ToList();
在哪里
To是扩展方法。显示您的选择/插入请仅获取图片:如果仅将
[NotMapped]
置于APN
上会发生什么?(我知道这完全不同)。在这种情况下,我从不实例化或使用评估导入错误。我只使用了ImportError
您确定参数“列表错误”不是资产列表导入错误吗?100%确定。我正在用一些新信息更新这个问题。我假设你真的需要使用EF BulkInsert库,对吗?是的,我们很可能会有大量错误。不过我有个变通办法。我有assessmentimportorror,但没有扩展importorror,并且在需要使用它时有一个绑定函数。BulkInsert软件包没有注意到它。