Я знаю, что вопрос уже имеет решение (например, этот вопрос ), но я действительно не могу позволить присоединить логику отображения в той же сборке, где находится домен (классы POCO).
Есть ли другой способ?
Я нашел это хороший пост в блоге , но не смог заставить его работать.Вот модель:
public class Institute
{
/**
Code omitted
**/
protected virtual ICollection<InstituteText> InnerInstituteTexts { get; set; }
private InstituteTextSet _TextSets;
public InstituteTextSet Texts
{
get
{
if (_TextSets == null)
_TextSets = new InstituteTextSet(InnerInstituteTexts);
return _TextSets;
}
}
}
Код отображения:
var instituteTextExpression = ObjectAccessor<Institute>.CreateExpression<ICollection<InstituteText>>("InnerInstituteTexts");
institute.HasMany(instituteTextExpression)
.WithRequired()
.HasForeignKey(t => t.InstituteId);
, где CreateExpression определено как:
public static Expression<Func<T, TResult>> CreateExpression<TResult>(string propertyOrFieldName)
{
ParameterExpression param = Expression.Parameter(typeof(T), "propertyOrFieldContainer");
Expression body = Expression.PropertyOrField(param, propertyOrFieldName);
LambdaExpression lambda = Expression.Lambda(typeof(Func<T, TResult>), body, param);
return (Expression<Func<T, TResult>>) lambda;
}
ошибка, которую я получаю:
Метод инициализации Studentum.Core.Tests.InstituteTests.Initialize бросил исключение.System.TypeInitializationException: System.TypeInitializationException: инициализатор типа для «Studentum.Core.FluentCoreRepositoryFactory» вызвал исключение.---> System.InvalidOperationException: настроенное свойство 'InnerInstituteTexts' не является объявленным свойством для объекта 'Institute'.Убедитесь, что он не был явно исключен из модели и является допустимым примитивным свойством.