C# NotMapped字段未由调用.NET Core的过程中的值分配
在我的上下文中有一个类型为C# NotMapped字段未由调用.NET Core的过程中的值分配,c#,.net,linq,asp.net-core,C#,.net,Linq,Asp.net Core,在我的上下文中有一个类型为DbQuery的模型,用于在其中执行存储过程 public class DynamicClass { public int ItemId { get; set; } [NotMapped] public string Title { get; set; } [NotMapped] public string TitleArabic { get; set; } public int? SeasonNumber { get;
DbQuery
的模型,用于在其中执行存储过程
public class DynamicClass
{
public int ItemId { get; set; }
[NotMapped]
public string Title { get; set; }
[NotMapped]
public string TitleArabic { get; set; }
public int? SeasonNumber { get; set; }
}
查询:
SELECT ItemId, Title, TitleArabic, SeasonNumber
FROM dynamicclass
List Result=context.DynamicClass.FromSql(“从DynamicClass中选择ItemId、Title、TitleArabic、季节号”).ToList();
查询工作正常,但执行查询时,NotMapped
字段未获取值
我的查询可能包含也可能不包含Title
和TitleArabic
,这就是我为这些字段指定NotMapped
注释的原因
如果我删除了所有的NotMapped
注释,并且查询结果不包含我在模型中指定的所有列,那么我会得到一个错误
“FromSql”操作的结果中不存在所需的列“Title”
我如何解决这个问题,或者有更好的办法吗?数据库对所表示属性的排除映射。
这意味着,如果您从数据库中读取某些内容,并且仅在手动分配某些内容后,属性Title
和TitleArabic
才会获取值。
如果从表中读取数据的表包含Title
和TitleArabic
列,则从表中读取数据时,只需删除NotMapped属性即可填充这些值。
否则,您可以指定这些属性应手动返回的内容。例如:
public class DynamicClass
{
public int ItemId { get; set; }
[NotMapped]
public string Title { get; set; }
[NotMapped]
public string TitleArabic => GetArabicTitle(Title);
public int? SeasonNumber { get; set; }
}
如果执行的查询不会返回
Title
或ArabicTitle
,则结果对象上的属性在没有NotMapped属性的情况下将为null。这就是NotMapped属性的思想,它在数据库映射中忽略这些列
表示应从数据库映射中排除属性或类
如果删除NotMapped属性,将始终获得这些列的值。如果它们在数据库中为null,则映射值也将为null。表本身实际上不存在,因此列也不存在。如果删除了not mapped,则一切正常,但每次查询中可能不会返回all列如果我删除了所有NotMapped属性,并且查询结果不包含我在模型中给定的所有列,则会导致错误“column name无效”“如果我删除了所有NotMapped属性,并且查询结果不包含我在模型中给出的所有冒号,那么它将导致错误“无效冒号名称”“您不能”既有蛋糕又有蛋糕。”,要么所有列都已映射并始终在结果集中,要么未映射。如果有多个返回不同结果的原始查询,则需要不同的结果类型。问题是iam动态生成此sql字符串。。因此,我的模型中的所有字段并非每次在查询中都返回。错误目标是:“'FromSql'操作的结果中不存在所需的列'Title'。在这种情况下,这取决于sql查询的动态程度。如果只有这两种情况,即查询中是否有这两列,则可以将模型类分为两个类,其中一个类有这两列[而没有为其指定NotMapped属性]还有一个没有这些列的类。也许你可以先检查数据库中的列。我希望能帮助你。
public class DynamicClass
{
public int ItemId { get; set; }
[NotMapped]
public string Title { get; set; }
[NotMapped]
public string TitleArabic => GetArabicTitle(Title);
public int? SeasonNumber { get; set; }
}