C# 在ASP.Net中基于SQL表动态生成模型

C# 在ASP.Net中基于SQL表动态生成模型,c#,asp.net,asp.net-mvc,model-view-controller,C#,Asp.net,Asp.net Mvc,Model View Controller,我试图创建一个可以动态构建的模型,该模型基于SQL表。我事先不知道SQL表,所以模型需要是动态的。可能的表格太多,无法为每个表格预先构建模型。我希望用户能够浏览,从列表中选择一个表,然后根据该表生成一个模型。如有任何见解或指导,将不胜感激。谢谢我能想到几种稍微不同的方法。所有人都会考虑一个代码生成器(如T4文本模板工具) 我们使用的一种方法是将所有列定义和表定义映射到数据库中单独的表中。这是不必要的,因为您可以使用数据库的Information_模式来检索简单模型所需的信息。但是很快,你需要额外

我试图创建一个可以动态构建的模型,该模型基于SQL表。我事先不知道SQL表,所以模型需要是动态的。可能的表格太多,无法为每个表格预先构建模型。我希望用户能够浏览,从列表中选择一个表,然后根据该表生成一个模型。如有任何见解或指导,将不胜感激。谢谢

我能想到几种稍微不同的方法。所有人都会考虑一个代码生成器(如T4文本模板工具)

我们使用的一种方法是将所有列定义和表定义映射到数据库中单独的表中。这是不必要的,因为您可以使用数据库的Information_模式来检索简单模型所需的信息。但是很快,你需要额外的信息(这是更可能的情况),我想把列和表映射成自己表中自己的数据记录。< /P> 具体来说,我指的是列和表定义是创建模型所需的信息。 例如,Table DialogColumn具有Columnname(nVarchar)、displayname(nVarchar)、recordhistory(bit)、UID_Dialogtable等列,以及表示模型属性的一些其他“元数据”。一个表,让它也命名为Dialogtable,然后提供所有属性,如tablename、displayname、OnSaveScript等

有了这些信息,您可以将typewrappers生成为模型。 您最好在编译器的构建过程中将它们创建为预步,或者只创建一次(取决于您的架构)。 为了扩展和修改模型结构,您可以编写一个单独的工具来管理数据库中的表和列条目,并编译所需的程序集


以此类推

模型通常是强类型的,因此在构建时已知。你的用户是谁?开发人员还是应用程序用户?您是否意识到添加(模型)类需要重建应用程序?您是否考虑过Entity Framework DB First development?这是一个相当广泛的问题,因此这里有一个同样广泛的建议(不是答案):许多CMS(例如Sitefinity)允许为web创建自定义内容类型。然后,它将创建某种模式文档,该文档将在每次应用程序启动时持久化并加载,以便能够引用表。他们使用开放存取作为ORM。我不确定这个功能是否是OpenAccess的一个特性,或者它们是否只是构建在它之上。其他CMSE必须做类似的事情(动态内容类型)。所有这样创建的模型都必须从CRUD的相同类型继承