Nhibernate架构更新 - 无法实例化抽象类或接口

时间:2012-06-08 15:03:11

标签: c# nhibernate joined-subclass

我使用Nhibernate和Nhibernate.Mapping.Attributes。 我可以很容易地创建一个模式,它可以很好地工作,如果我像添加列一样简单更新一切顺利,我的数据库正确更新。 如果我添加一个新的子子类,架构已正确更新,而DB也是如此,但我得到了这个异常

Cannot instantiate abstract class or interface: AEGestioneRicevute.Entities.Dichiarazione||   in NHibernate.Tuple.PocoInstantiator.Instantiate() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Tuple\PocoInstantiator.cs:line 89

我必须让它工作的唯一方法是从整个数据库中删除并创建零,但这不是我喜欢做的。

这是我的一个类映射 (基峰)

[HibernateMapping(0, Schema = "Schema", DefaultAccessType = typeof(int), AutoImport = true, Namespace = "AEGestioneRicevute.Entities", Assembly = "AEGestioneRicevute")]
[Class (1, Table = "Dichiarazione", NameType = typeof(Dichiarazione), Abstract = true, SelectBeforeUpdate = false)]
public abstract class Dichiarazione
{
    ID_Dichiarazione dichID;
    [CompositeId(2, Name = "Dichiarazione_ID", ClassType = typeof(ID_Dichiarazione))]
    [KeyProperty(3, Name = "Progressivo", Column = "IDProgressivo", Type = "string")]
    [KeyProperty(4, Name = "Protocollo", Column = "IDProtocollo", Type = "string")]
    [KeyProperty(4, Name = "CodiceFornitura", Column = "IDCodiceFornitura", Type = "string")]
    public virtual ID_Dichiarazione Dichiarazione_ID
    {
        get { return dichID; }
        set { dichID = value; }
    }

(第一个子类)

[HibernateMapping(20, Schema = "Schema", DefaultAccessType = typeof(int), AutoImport = true, Namespace = "AEGestioneRicevute.Entities", Assembly = "AEGestioneRicevute")]
[JoinedSubclass(21, ExtendsType = typeof(Dichiarazione), Table = "DichiarazioneUnici", NameType = typeof(DichiarazioneUnici), Abstract = true)]
public abstract class DichiarazioneUnici : Dichiarazione
{
    [Key(22)]
    [Column(23, Name = "Progressivo")]
    [Column(24, Name = "Protocollo")]        
    [Column(25, Name = "CodiceFornitura")]

(子子类)

[HibernateMapping(50, Schema = "Schema", DefaultAccessType = typeof(int), AutoImport = true, Namespace = "AEGestioneRicevute.Entities", Assembly = "AEGestioneRicevute")]
[JoinedSubclass(51, ExtendsType = typeof(DichiarazioneUnici), Table = "UnicoIVD", NameType = typeof(UnicoIVD))]
public class UnicoIVD : DichiarazioneUnici
{
    [Key(200)]
    [Column(201, Name = "Protocollo")]
    [Column(202, Name = "Progressivo")]
    [Column(203, Name = "CodiceFornitura")]

有什么想法吗? 提前致谢

0 个答案:

没有答案