2013-02-28 3 views
0

У меня есть две библиотеки для моделей данных и контекста db.Модели данных и библиотеки классов - как добавить виртуальную проету к объекту в другую библиотеку классов?

  1. Basic с объектом

    public class Person 
    { 
        [Key] 
        public int ID { get; set; } 
        public string Name { get; set; } 
        public string SName { get; set; } 
        public bool IsSystemUser { get; set; }    
    } 
    
  2. Расширенная

    public class Vehicle 
    { 
        [Key] 
        public int Id { get; set; } 
        public string Name { get; set; } 
        public string Plate { get; set; }  
        public virtual ICollection<Person> Users { get; set; } 
    } 
    

Как добавить общественные виртуальные ICollection Транспортные средства {получить; задавать; } для объекта в библиотеке первого класса. EF правильно генерирует базу данных.

+0

Вы хотите изменить класс в загруженной библиотеке классов? Вы можете добавлять только методы, а не свойства – hcb

+0

Итак, как мне добавить метод? – SpoksST

+0

Пожалуйста, объясните, что вы хотите сделать, и используйте правильные условия для вещей, чтобы избежать путаницы. У вас есть два _класса_, они в одном проекте? Затем они находятся в одной и той же сборке и, следовательно, в той же библиотеке классов. Вы просто хотите добавить свойство 'public virtual ICollection Vehicles {get; задавать; } 'к классу« Личность », затем сделайте это, и вы хорошо пойдете. Если вы хотите сделать это динамически, так что во время работы все становится немного сложнее. Не в первую очередь потому, что Entity Framework в значительной степени не использует ваши методы расширения для создания столбцов или таблиц. – CodeCaster

ответ

0

Во второй библиотеке я хочу продлить Лицо, определенное в первой библиотеке, поэтому он может иметь много ко многим отношений с объектами в секунду библиотека.

Вы можете расширить Person класс базовой библиотеки:

using BasePerson = BaseLibrary.Person; 

public class Person : BasePerson 
{ 
    public virtual ICollection Vehicles { get; set; } 
} 

Это будет работать только, если вы также продлить DbContext:

using BaseContext = BaseLibrary.MyContext; 

public class MyExtendedContext : BaseContext 
{ 
    public new DbSet<Person> Persons { get; set; } 
} 

Теперь, когда вы используете MyExtendedContext вы сможете для доступа к коллекции транспортных средств.

+0

Я не могу скомпилировать проект - если я делаю это «DataModels.Extended.DBContext.Persons»: type должен быть «System.Data.Entity.DbSet » для сопоставления переопределенного элемента DataModels.Basic.DBContext. Люди – SpoksST

+0

Но я думаю, что это именно то, что я ищу. – SpoksST

+0

О, конечно. См. Править. – CodeCaster

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