Свободный NHibernate, ссылка на жестко закодированный метод C # - PullRequest
2 голосов
/ 14 мая 2011

У меня есть некоторые функции, которые должны быть «выбираемыми» в качестве опции для определенных объектов в моей базе данных, но реальный код каждого метода слишком сложен, чтобы его можно было сериализовать в базу данных.Они также не могут быть хранимыми процедурами SQL.

Так что, в принципе, у меня есть статический List<T> этих функций.Есть ли стандартный способ связать их с объектами в моей базе данных?Например ..

var functions = new static List<Omega>{
 new Omega {
   Id = 1, // this would be useful to a database, but nothing really sets it.
   Name = "Some Name", // this isn't useful. It's a string literal
   Function = // this may be a Method, or a Lambda Expression, or something else.
 }
};

class Psi { 
  Guid Id { get; set; }
  Omega Omega { get; set; } // how can I keep a hard-reference here?
}

1 Ответ

2 голосов
/ 15 мая 2011

Хорошо, я не уверен, правильно ли я понял. Делегаты сериализуемые и, следовательно, они могут быть сохранены в базе данных, например, с использованием NH . Есть некоторые ограничения, но в любом случае сериализация делегатов - это авантюрное путешествие:).

Если это не жизнеспособный способ, то вы можете попытаться реализовать все свои «функции» как статические методы. Имя класса и метода может храниться в столбце таблицы и вызываться с помощью отражения.

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