gpt4 book ai didi

c# - 为什么 View 模型不可能从 Entity Framework 中的模型继承

转载 作者:太空狗 更新时间:2023-10-29 22:18:59 26 4
gpt4 key购买 nike

当我在工作中开发一个应用程序时,我遇到了一个错误:

Value cannot be null. Parameter name: input

有一个lots of post talking about that所以我读了他们......没有解决方案。

很高兴继续。所以我检查了数据库模型中是否有任何不可为空的属性试图插入而不是,所有这些属性都可以为空(身份除外),所以这不是问题。所以我意识到,引发错误的 View 模型继承自模型类,我想:“这可能是问题所在吗?”。所以我不再继承模型并重新开始工作。

请注意,这不是我第一次遇到这种情况,两周前我也遇到过同样的情况,这是因为它。

为什么我要从模型类继承?因为它有 +10 个属性,我需要它在 View 中显示这些值,但我还需要显示另一个模型类的值,所以我创建了一个 View 模型:

class ViewModel: ModelClass{

//ModelClass contains +10 properties
//and the current class contains 7 properties

public ModelClass CastToModelClass()
{
return new ModelClass{ /*stuff...*/ }// casting the current properties values to the ModelClass class
}
}

当我插入新类型转换的模型时出现错误:

public JsonResult Save(ViewModel model)
{
var modelClass = model.CastToModelClass();
// here there are not empty properties
context.ModelClass.Add(modelClass);
context.SaveChanges();// error throw
}

所以我的问题是,为什么从 Model 类继承是错误的

最佳答案

您的问题“为什么从 Model 类继承是错误的?” 来自这个问题是由继承引起的错误假设。这样做在概念上是不可取的,但从技术上讲,如果编程正确,它应该不会引起任何问题。

其他人已经回答了为什么使用 Entity Framework 模型作为(部分) View 模型不是一个好主意,所以我将解决手头的技术问题。

假设你这样做:

var modelClass = model.CastToModelClass();
context.ModelClass.Add(modelClass);
context.SaveChanges();

CastToModelClass() 返回一个 EF 模型,使您的继承问题变得无关紧要。问题必须在准备并返回新的 ModelClass 实体的代码中。

如果你这样做

var entityModel = new ModelClass
{
Prop1 = model.Prop1,
Prop2 = model.Prop2,
// ...
};
context.ModelClass.Add(entityModel);
context.SaveChanges();

你基本上是在做同样的事情。那应该行得通;如果没有,则说明您没有正确映射所有属性。问题不在于继承。

关于c# - 为什么 View 模型不可能从 Entity Framework 中的模型继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23955745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com