我有21个具有相同结构的实体。
同样的属性。
每个实体都包含这些属性:
的 AreaType
ID
IsActive
LangID
TXT
ModuleType
ID
IsActive
LangID
文本
...
我需要执行一般的Crud。我已经知道我需要创建一个通用存储库。我的问题是执行一种通用的ViewModel。
如何为“创建表单”创建通用视图。
我不知道我需要传递的视图的继承是Generic。
... Inherits="System.Web.Mvc.ViewPage<...Dont know>"
任何想法?
答案 0 :(得分:2)
此问题的常见方法是使用ViewModels。您可以在此处创建特定类,以用作强类型视图中的模型。这些类不是EF创建的类。 ViewModel类可以有一个公共基础来封装您的公共字段。在数据访问层中,您需要在ViewModel类和EF类之间移动数据。 AutoMapper(来自CodePlex)之类的东西可以很好地减少(如果不能消除)所有繁琐的“左手右手”编码。
答案 1 :(得分:0)
对MVC不太熟悉,但(假设它适合您的层次结构),我认为您可以创建一个包含所需属性的抽象类,例如。
public abstract class ViewableObject {
public abstract int ID {get; set;}
public abstract bool IsActive {get; set;}
// etc
}
然后用普通类(AreaType等)实现它,例如:
public class AreaType: ViewableObject{
public override int ID { get; set; }
public override bool IsActive{ get; set; }
}
并使视图使用抽象类。
... Inherits="System.Web.Mvc.ViewPage<ViewableObject>"
答案 2 :(得分:0)
一个想法是简单地更改基础表。将AreaType和ModuleType合并到一个“WhateverType”表中,该表包含一个确切地标识其类型的字段。然后当你对你的类进行编码时,你将只有一个类来处理。
但是,还有其他问题,只有在您的应用程序中有意义时才应该这样做。