【发布时间】:2019-02-25 13:46:05
【问题描述】:
我把这篇文章加红了:The entity cannot be constructed in a LINQ to Entities query,但猜想它与我的问题并不完全相关。
我有这个代码:
public class Class1
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
}
[Table("Class2")]
public class Class2
{
[Key]
[Column("Prop1")]
public string Prop1 { get; set; }
[Column("Prop2")]
public string Prop2 { get; set; }
[Column("Prop3")]
public string Prop3 { get; set; }
}
和方法编辑我想在哪里使用这些:
using (var data = new Context())
{
var config = data.Class2.FirstOrDefault(c => c.Prop1.Contains(some_string));
if (config != null)
{
config.Prop1 = class1_instance.Prop1;
config.Prop2 = class1_instance.Prop2;
config.Prop3 = class1_instance.Prop3;
}
data.Entry(config).State = EntityState.Modified;
data.SaveChanges();
}
所以我想要得到的是简化编辑,而不是一个一个地分配每个属性我想写类似config = class1_instance;的东西
所以我从Class2 继承了Class1,但是得到了
System.NotSupportedException(不能在 Linq to Entities 查询中构造实体或复杂类型“Class1”)。
我该如何处理?
【问题讨论】:
-
你必须在 Class1 和 Class2 之间创建一个
Interface。这样你以后就可以转换成一个或另一个。 -
你从哪里得到异常?什么是完整的例外?您的代码不包含任何继承或 class1=class2 分配?
-
什么是“blabla”,还有什么是configModel?还不足以看到这里发生了什么。
-
你可以看看继承映射:weblogs.asp.net/manavi/…
-
@Nekeniehl 嗨!感谢您的回复!我已经创建了接口: public interface IConfig { string Prop1 { get;放; } 字符串 Prop2 { 获取;放; } 字符串 Prop3 { 获取;放; }},并且两个类都继承了这个接口,但是我还是不能写 config = class1_instance;出现错误“无法将类型 Class2 隐式转换为 Class1”。还是我应该做点别的?
标签: c# asp.net entity-framework linq