2012-02-29 2 views
1

У меня действительно плохо написанная устаревшая база данных SQL Server, с которой мне нужно кодировать. К сожалению, многие другие устаревшие приложения, которые не были обновлены, по-прежнему работают против этой базы данных. Я решил, что я буду использовать Entity Framework для чистого кода моего приложения C# против него.База данных Entity Framework Сначала для плохо написанной базы данных

У меня есть таблица, которая выглядит следующим образом.

Vector

  • VectorId (INT) PK
  • Имя (VARCHAR)
  • Info (VARCHAR)

К сожалению Vector. Info - это серия значений, разделенных запятой, которые мне нужно, чтобы иметь возможность редактировать чисто. Пример записи в Vector.Info может быть: 150, -56,36,866 (они соответствуют X, Y, Z, T в этом конкретном порядке). Я знаю, что это плохой антипаттерн, что лучший способ справиться с этим, используя Entity Framework?

ответ

1

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

from c in Vectors 
    where fnInfo(c).Any(f=>f.X == 150) 
    select c 

Что вы можете сделать в этом случае, чтобы создать представление для VectorId, Name, Info, X, Y, Z, T, потому что кажется, что раскол зафиксирован, он всегда создает эти координаты.

Таким образом, вы можете использовать этот вид с другими наборами EF. Вы можете создавать свойства навигации до тех пор, пока в модели будет установлен параметр PrimaryKey.
Вы должны иметь дело с обновлениями. Когда одна из координат изменяется, вероятно, вам придется разбить строку и скорректировать ее с новыми координатами.

+0

EF 5 Beta поддерживает функции table-value в Db. Первый подход. http://blogs.msdn.com/b/adonet/archive/2012/02/29/ef4-3-1-and-ef5-beta-1-available-on-nuget.aspx –

+0

, который поставляется с .Net Framework 4.5 –

Смежные вопросы