如何在asp.net mvc

时间:2016-07-18 18:05:39

标签: c# asp.net-mvc entity-framework

在下面的场景中,Field类有2个属性DataType,它是枚举,Value是对象类型。我应该如何使用Entity Framework为以下类创建SQL表?请详细解释,因为我是MVC的新手。

注意:我能够创建具有任何预定义数据类型的SQL表(首先使用mvc代码)和枚举,但是我不知道如何实现对象类型属性。这里Field表应该容纳大量的列。还有一种方法可以使用Dictionary来实现Value。或者可以使用任何其他ORM来实现。

public class Data
{
public string name {get; set;}
public Field Value {get;set;}
}

public class Field
{
public DataType datatype {get;set;}
public object Value {get; set;}
}
public class Field<T> : Field
{
T Value {get; set;}
}

@Abdulmalek Albakkar,我已经有一个asp.net代码,我正在尝试构建一个db模式。这些属性来自业务逻辑,这就是为什么它们不是非常友好的数据库。 让我尝试用下面的例子来解释,第一个表(Person)就像一个存储人名(字符串)的索引和带有人(类对象)细节的字段。

public class Person
{
public string name {get; set;}
public Field Value {get;set;}
}

第二个表(GetPersonDetail)是一个链接到Person表,它有一个列可以采用任何数据类型及其值

public class GetPersonDetail
{
public object Value {get; set;}
}

对于每个人,应该只有一个表只有一行,并且所有的人员细节都应该从GetPersonDetail表中提取,即;

**Value**                       
FirstName:Sam                       
LastName:Wolsh                      
Age:21                      
Salary:3000                     
Weight:55                       
Hobby:Singing                       

**Name  FirstName   LastName    Age Salary  Weight  Hobby**
  Sam   Sam         Wolsh       21  3000    55      Singing


**Value**           
NickName:Bob            
Height:160          
Interest:Travel         

**Name  NickName    Height  Interest**
  Bobby Bob         168     Travel

此处应允许此人在GetPersonDetail表中输入他们想要提供的任何详细信息,然后在单个列中收集的所有详细信息应自动转换为Person表中的列,如上所述。这种情况可以在MVC中实现吗?

1 个答案:

答案 0 :(得分:0)

EF不支持通用类

我想我之前已经知道了 你可能应该创建三个类 我们假设我们正在处理账户...... 我们的课程是账户,详细信息,账户详细信息

Account:ID,Name 
Detail: ID,Name , Type(enum)
AccountDetail: ID, AccountID , DetailID , Value [object]

然后,当用户输入不存在的详细信息时,我们先将其添加到详细信息中,然后在该帐户与我们插入的详细信息之间建立关系

Account: 1, John
Detail: 1, Age , Int(enum)[0,1,2...etc]
AccountDetail:1,1,1,24

然后,根据您的类型(枚举),您可以对输入(值)进行验证

当用户输入我们已有的详细信息时,我们只需从我们的数据库中获取其ID并与该帐户建立关系