samlee69 Ответов: 1

Отображение классов и подклассов с помощью fluent nhibernate


привет друзья,

Я получаю проблему при отображении моего класса модели(с подклассами).
Я не понимаю, как это называется. Он показывает ошибку при написании кода.
Ошибка заключается в том, что "CatsTute" не содержит определения для "Name" и не может быть найден метод расширения "Name", принимающий первый аргумент типа "CatsTute" (отсутствует ли директива using или ссылка на сборку?)":
Вот основная модель (CatsTutes):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using codes.Models.BaseModel;

namespace codes.Models
{
    public class CatsTute:ModelBase
    {
        public class Category:ModelBase
        {
            public virtual string Name { get; set; }
            public virtual string Image { get; set; }
        }
        public class SubCat:ModelBase
        {
            public virtual int CatId { get; set; }
            public virtual string Name { get; set; }
            public virtual string Image { get; set; }
        }
        public class Tutorial:ModelBase
        {
            public virtual string Name { get; set; }
            public virtual string Description { get; set; }
            public virtual int SubCatId { get; set; }
        }
    }
}

Это базовая модель(ModelBase):-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace codes.Models.BaseModel
{
    public class ModelBase
    {
        public virtual int Id { get; set; }
        public virtual DateTime CreatedOn { get; set; }
        public virtual DateTime UpdatedOn { get; set; }
        public virtual int Deleted { get; set; }
        public virtual bool Status { get; set; }
    }
}

Вот класс mapping(AllMapping):-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using FluentNHibernate.Mapping;

namespace codes.Models.Mapping
{
    public class AllMappings : ClassMap<CatsTute>
    {
        public AllMappings()
        {
            Table("CatsTute");
            Id(x => x.Id, "Id").GeneratedBy.Identity().UnsavedValue(0);
            Map(x => x.Status);
            Map(x => x.CreatedOn);
            Map(x => x.UpdatedOn);
            Map(x => x.Deleted);
            Map(x => x.Name).CustomSqlType("nvarchar(50)");   <========Here is the problem
            DynamicUpdate();
        }
    }
}


Что я уже пробовал:

Я не знаю, что делать............

Richard Deeming

Сообщение об ошибке совершенно ясно: ваш CatsTute класс не содержит свойства с именем Name.

Существует три вложенных класса внутри CatsTute класс который делать содержит свойство под названием Name Но ... CatsTute класс сам по себе не имеет Name собственность.

1 Ответов

Рейтинг:
0

RickZeeland

Проблема, как мне кажется, в том, что 'Name'определяется три раза, так что, возможно, вам нужно использовать уникальные имена, такие как Name1, Name2, Name3.
Вот статья о CodeProject, которая объясняет отображение подклассов: Стратегии отображения наследования в Fluent Nhibernate[^]


Richard Deeming

Кроме всех троих Name свойства определяются во вложенных классах. :)

(Отсутствие отступов не помогает.)