Как добавить информацию о внешнем ключе в код сначала POCO для соответствия RIA Services - PullRequest
0 голосов
/ 15 сентября 2011

Мои два класса следующие:

    public class Client
    {
        public Guid Id { get; set; }
        public String Name{ get; set; }         
        public virtual ICollection<Product> Products{ get; set; }
    }

    public class Product
    {
        public Guid Id { get; set; }
        public String Model { get; set; }
        public String Version { get; set; }
        [ForeignKey("Client_Id")]
        public virtual Client Client { get; set; }
        [ForeignKey("Client")]
        public Guid? Client_Id { get; set; }

    }

И класс DbContext таков:

    public class ClientContext : DbContext
    {
        public DbSet<Client> Clients { get; set; }
        public DbSet<Product> Products { get; set; }
    }

Я подтвердил, что эта модель работает со связанной базой данных для всех обычных CRUDвещи.

Я создал класс RIA DoaminService на веб-сайте следующим образом:

    [EnableClientAccess]
    public class ClientDomainService : DbDomainService<ClientContext>
    {
        public IQueryable<DomainModel.Product> GetProducts()
        {
            return this.DbContext.Controllers;
        }

        public IQueryable<DomainModel.Client> GetClients()
        {
            return this.DbContext.Clients;
        }
    }

Когда я создаю приложение silverlight, я получаю сообщение об ошибке:

Невозможно получить информацию об ассоциации для ассоциации .... Поддерживаются только модели, содержащие информацию о внешнем ключе.

Я думал, что атрибуты [ForeignKey] добавлены в свойства Client и Client_Id класса Productбудет соответствовать требованию "включить информацию о внешнем ключе".

Чего мне не хватает?

1 Ответ

3 голосов
/ 15 сентября 2011

Предполагая, что ваш код завершен, вы упускаете другую сторону отношения внешнего ключа ... атрибуты [Key] на первичных ключах.

...