2013-02-21 2 views
0

Я выставил некоторые объекты EF5.0, созданные из базы данных, через службу данных WCF.Как расширить класс сущности dbcontext?

Служба данных используется WPF-клиентом, который берет сущности (из службы данных) и сохраняет их локально. Я делаю это путем создания коды-первой базы данных сущностей на основе WCF-сущностях:

public class LocalRaceContext : DbContext 
{ 
    public LocalRaceContext() { } 
    public LocalRaceContext(string connstr) : base(connstr) { } 

    public DbSet<Participant> Participants { get; set; } 
    . 
    . 
    . more ... 
} 

Я хочу продлить Участник нового свойства (в стороне клиента модели). Я решил, что могу просто сделать это с частичным классом, например:

public partial class Participant 
{ 
    public virtual List<Stamp> Stamps { get; set; } 
} 

Это, однако, не работает. Нужен ли мне какой-то атрибут для частичного класса?

я получаю следующее сообщение об ошибке:

"The type 'RaceEntities+Participant' was not mapped. Check that the type has not been explicitly excluded by using the Ignore method or NotMappedAttribute data annotation. Verify that the type was defined as a class, is not primitive, nested or generic, and does not inherit from EntityObject." 

Edit:

@ IronMan84: оригинальная модель (без частичного класса) работает, потому что EF код-первых ухаживает базы данных и таблицы создание. На самом деле он отлично работает, и я могу сохранить EF-модель в локальном файле SQL CE и снова восстановить объекты как EF-классы позже.

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

@Matt Whetton: Это не удается, когда я создаю новый экземпляр LocalRaceContext.

Редактировать 2: Я попытался сделать пустой частичный класс (без свойств). Он по-прежнему бросает ту же ошибку.

Заранее спасибо

Frederik

+0

Когда это не удается? –

+0

Вы хотите добавить это на * клиентскую модель *? Конечно, это не сработает. Ваша модель базы данных не знает, что это за поле. Что ты пытаешься сделать? – IronMan84

+0

Ive отредактировал мой вопрос - включенные ответы на ваши вопросы – Frederik

ответ

1

Вложенные классы не поддерживаются EF. Переместите класс участника за пределы RaceEntities.

+0

@Frederik, я не имею в виду список . Согласно сообщению об исключении, он пытается отобразить класс с именем «RaceEntities + Участник». «+» - это то, как CLR называет вложенные классы. Один из ваших классов частичного участия содержится в классе RaceEntities случайно. – bricelam

+0

Да, Брайс, вы правы. На самом деле я не знал значения знака плюс. Большое спасибо за разработку :-) – Frederik

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