2016-07-18 2 views
0

В приведенном ниже сценарии класс Field имеет 2 свойства DataType, который является перечислением и значением как тип объекта. Как создать таблицы SQL для следующих классов с использованием Entity Framework? Пожалуйста, подробно объясните, как я новичок в MVC.Как работать с свойствами типа объекта в asp.net mvc

Примечание: Я могу создать таблицы SQL с любым предопределенным типом данных (сначала с использованием кода mvc), а также перечислением, однако я не знаю, как реализовать свойства типа объекта. Здесь полевой стол должен содержать огромное количество столбцов. Также есть способ, которым я могу использовать словарь для реализации 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, для которого я пытаюсь построить схему дб. Свойства исходят из бизнес-логики, поэтому они не очень дружелюбны. Позвольте мне пояснить пример, приведенный ниже, первая таблица (Person) похожа на индекс, в котором хранится имя пользователя (строка) и поля, которые содержат сведения о человеке (объект класса).

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

вторая таблица (GetPersonDetail) является связанной с личностью таблицы, которая имеет один столбец, который может принимать любой тип данных и его значение

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?

+0

Что вы действительно хотите сохранить в этой колонке? Если вы сначала используете код, он создаст для вас таблицу (таблицы). – Shyju

+0

Спасибо за ответ ... Ну в этом примере мне нужно создать основную таблицу с именем Data, которая имеет два имени столбца и значение. И другое имя таблицы Field, которое может получать много значений от пользователя динамически. Допустим, у меня есть user1, а user1 может иметь много полей (в столбце значений, который должен быть заполнен из таблицы Field). пример user1 выберите значение 3 значения age (int), DOB (дата), зарплата (double), а другой user2 хочет ввести 10 различных данных. Таким образом, я хочу таблицу, которая не ограничивается определенной длиной столбца, но должна иметь возможность расти по мере ввода пользователем данных. Может ли это быть достигнуто? – dream

+0

Если вы хотите систему, в которой каждый пользователь может ввести переменную сумму пар имя-значение, где значения являются разными типами, вы можете посмотреть на нечто иное, чем реляционная база данных. Хотя то, что вы описываете, может быть сделано с реляционной базой данных, чрезвычайно сложно запросить. –

ответ

0

Обобщенные классы не поддерживаются в EF

Я думаю, что я получил, что, прежде чем Вы, вероятно, следует создать три класса Допустим, мы имеем дело с аккаунтами так .. наши классы Accounts, Детали, AccountDetails

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 

И затем, в зависимости от типа (перечисления) вы делаете вашу проверку о входе (значение)

, когда пользователь вводит детали у нас уже есть, мы просто должны получить его идентификатор из нашей базы данных и установить связь с этим счетом

+0

Спасибо Абдулу за ответ. Однако в этом случае я пытаюсь создать новую схему базы данных с двумя столбцами для подачи данных от пользователя, поскольку эти данные будут использоваться для целей анализа. Вы предлагаете какой-либо другой способ достичь этого, поскольку EF не поддерживает общие классы? – dream

+0

Может быть, если вы объяснили свою ситуацию больше, я мог бы быть полезен и помог :) Почему новая схема и что именно «для подачи данных от пользователя» Я до сих пор точно не знаю, что вы хотите сделать –

+0

Привет, Абдул. Поскольку мое сообщение было слишком длинным, я не мог комментировать здесь. Я дал подробное сообщение сверху. Пожалуйста, дайте ему взглянуть. Любая помощь приветствуется. – dream