У меня есть проект, содержащий объекты POCO.Для нее был создан контекст базы данных с использованием Entity Framework 4.2 и кода.Это работает нормально, но контекст должен быть представлен как служба OData, которая не работает.
При просмотре службы OData выдается эта ошибка:
Свойство DataSubmissionItems включенотип 'Lifecycle.ProgramReportSubmission.Model.ProgramReportSubmission' не является допустимым свойством.Свойства, типы которых являются коллекцией примитивов или сложных типов, не поддерживаются.
Класс обслуживания данных выглядит следующим образом:
public class ExceptionReportDataService : DataService<ExceptionReportEntitiesContext>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
config.UseVerboseErrors = true;
}
}
EFкласс контекста выглядит следующим образом:
public class ExceptionReportEntitiesContext : DbContext
{
public DbSet<ExceptionReport> ExceptionReports { get; set; }
public ExceptionReportEntitiesContext()
: base(DynamicConfig.GetAppSettingValue("DB_CONN_STRING_LIFECYCLE"))
{
}
}
POCO-сущности выглядят так:
namespace WBRT.ProgramData.Lifecycle.ExceptionReportModel
{
public class ExceptionReport
{
public virtual Guid ExceptionReportID { get; set; }
public virtual Lifecycle.ProgramReportSubmission.Model.ProgramReportSubmission ReportSubmission { get; set; }
}
}
namespace Lifecycle.ProgramReportSubmission.Model
{
public class ProgramReportSubmission
{
public Guid ProgramReportSubmissionId { get; set; }
public virtual ICollection<DataSubmissionItem> DataSubmissionItems { get; set; }
}
public class DataSubmissionItem
{
public Guid DataSubmissionItemId { get; set; }
}
}
То, что я пробовал:
- Установка
DataServiceKey
в классе DataSubmissionItem - Установка
ProxyCreationEnabled
в false в конструкторе ExceptionReportEntitiesContext, а также в службе данных - Переопределение
OnModelCreating
и удаление IncludeMetadataConvention - Переопределение
OnModelCreating
и установка modelBuilder.Entity<ProgramReportSubmission.Model.ProgramReportSubmission>().Ignore(prs => prs.DataSubmissionItems);
Примечание: Я не могу представить зависимость от DLL-файла EntityFramework в POCOпроекты лица, так как это влияет на ссылки на проекты, которые все еще работают.