Model:

 [Serializable]
    [HierarchyRoot]
    public class MyEntity : Entity
    {
        [Field, Key]
        public Guid Id { get; private set; }

        [Field(Length = 100)]
        public string Text { get; set; }

        [Association(PairTo = "Owner")]
        [Field]
        public EntitySet<TablePartBaseImpl<MyEntity>> SomeSet { get; set; }

        public MyEntity(Session session)
            : base(session)
        {
        }
    }

    [Serializable]
    [HierarchyRoot]
    public class MyEntitySecond : Entity
    {
        [Field, Key]
        public Guid Id { get; private set; }

        [Field(Length = 50)]
        public string SomeField { get; set; }

        [Association(PairTo = "Owner")]
        [Field]
        public EntitySet<TablePartBaseImpl<MyEntitySecond>> SomeSet { get; set; }

        public MyEntitySecond(Session session)
            : base(session)
        {
        }
    }

    [Serializable]
    public abstract class TablePartBase<TEntity> : Entity where TEntity : Entity
    {
        protected TablePartBase(Session session, TEntity owner) : base(session)
        {
            Owher = owner;
        }

        [Field, Key]
        public Guid Id { get; private set; }

        [Field]
        public TEntity Owher { get; set; }

    }

    [HierarchyRoot]
    [Serializable]
    public class TablePartBaseImpl<TEntity> : TablePartBase<TEntity> 
        where TEntity : Entity
    {
        public TablePartBaseImpl(Session session, TEntity owner) : base(session, owner)
        {
        }

        [Field]
        public string SomeStringField { get; set; }
    }

In recreate mode have exception:

Xtensive.Orm.DomainBuilderException occurred
Message=Type 'ConsoleApplication1.TablePartBaseImpl<ConsoleApplication1.MyEntity>' is not registered in the model.
Source=Xtensive.Orm
StackTrace:
   at Xtensive.Orm.Building.ModelInspector.GetTypeDef(Type type) in d:\Projects\Xtensive\DataObjects.Net\partnership\Xtensive.Orm\Xtensive.Orm\Orm\Building\ModelInspector.cs:line 352

InnerException:

Xtensive.Orm.dll!Xtensive.Orm.Building.ModelInspector.GetTypeDef(System.Type type) Line 354 C#
    Xtensive.Orm.dll!Xtensive.Orm.Building.ModelInspector.InspectField(Xtensive.Orm.Building.Definitions.TypeDef typeDef, Xtensive.Orm.Building.Definitions.FieldDef fieldDef, bool isKeyField) Line 321 + 0x8 bytes    C#
Xtensive.Orm.dll!Xtensive.Orm.Building.ModelInspector.Inspect(Xtensive.Orm.Building.Definitions.TypeDef typeDef) Line 284 + 0xd bytes   C#
Xtensive.Orm.dll!Xtensive.Orm.Building.ModelInspector.InspectTypes() Line 57 + 0x8 bytes    C#
Xtensive.Orm.dll!Xtensive.Orm.Building.ModelInspector.Run() Line 27 + 0x5 bytes C#
Xtensive.Orm.dll!Xtensive.Orm.Building.Builders.ModelBuilder.Run() Line 43 + 0x5 bytes  C#
Xtensive.Orm.dll!Xtensive.Orm.Building.Builders.DomainBuilder.BuildModel() Line 214 + 0x5 bytes C#
Xtensive.Orm.dll!Xtensive.Orm.Building.Builders.DomainBuilder.BuildDomain(Xtensive.Orm.Configuration.DomainConfiguration configuration, Xtensive.Orm.Building.Builders.DomainBuilderConfiguration builderConfiguration) Line 63 + 0x5 bytes C#
Xtensive.Orm.dll!Xtensive.Orm.Upgrade.UpgradingDomainBuilder.BuildStageDomain(Xtensive.Orm.Upgrade.UpgradeStage stage) Line 82 + 0x3a bytes C#
Xtensive.Orm.dll!Xtensive.Orm.Upgrade.UpgradingDomainBuilder.Build(Xtensive.Orm.Configuration.DomainConfiguration configuration) Line 62 + 0xa bytes    C#
Xtensive.Orm.dll!Xtensive.Orm.Domain.Build(Xtensive.Orm.Configuration.DomainConfiguration configuration) Line 281 + 0x8 bytes   C#
ConsoleApplication1.exe!ConsoleApplication1.Program.Main(string[] args) Line 52 + 0x8 bytes C#

asked Jan 31 '12 at 04:43

Multysh's gravatar image

Multysh
15669

edited Feb 01 '12 at 02:38

Dmitri%20Maximov's gravatar image

Dmitri Maximov
22111211


One Answer:

It seems that at the moment when ModelInspector traverses persistent types and fields, closed generics are not built yet, therefore, it can't find the corresponding type definition for MyEntity.SomeSet item type.

We'll check and fix that, however, depending on the complexity it might or might not be included into the upcoming releases (4.4.2/4.5.0).

answered Feb 01 '12 at 02:30

Dmitri%20Maximov's gravatar image

Dmitri Maximov
22111211

Your answer
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
toggle preview

powered by OSQA