Объекты с различными возможными типами данных в Entity Framework - PullRequest
0 голосов
/ 30 мая 2018

Я хочу сохранить объект в БД с использованием Entity Framework, и я хочу, чтобы они хранили некоторые данные и некоторые заголовки.Первый черновик выглядит примерно так:

class ResourceAttribute
{
    string AttributeName;
    DataType DataType;

    string StringValue;
    float? FloatValue;
    int? IntValue;

    string DefaultStringValue;
    float? DefaultFloatValue;
    int? DefaultIntValue;
}

Теперь это похоже на действительно плохой дизайн.Есть ли лучший способ представить структуру данных, подобную этой?

Может быть, что-то вроде этого:

class ResourceAttribute<T>
{
    string AttributeName;
    T Value;
    T DefaultValue;
}

Или, возможно, какой-то тип подклассов с различными типами значений.Но похоже, что это приведет к другим проблемам.

Каков наилучший способ представления таких данных?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Когда я сталкивался с подобной проблемой, я просто использовал object,

public class ResourceAttribute
{
   string AttributeName;
   string DataType;
   object StringValue;
   object DefaultStringValue;
}
0 голосов
/ 30 мая 2018

Существует несколько способов достижения этого, один из способов сохранить все как строку, а затем проанализировать их по классу преобразования. Например:

class ResourceAttribute{
    string AttributeName;
    string Value;
    string DefaultValue;
    Public T GetValue<T>()
    {
      try {
          return Convert.ChangeType(number, typeof(T));
      }
      catch (InvalidCastException) {
         Console.WriteLine("Cannot convert");
         return default(T); // Or you can return your default value obj
      }

    }
}

Таким образом, вы можете преобразовать в любой формат, который вам нужен, передавтребуемый тип данных.И все значения будут храниться в виде строк в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...