2009-08-04 4 views
0

Je construis un moteur de base pour mon blog et je voudrais pouvoir l'étendre très facilement. Au moment mon code ressemble à ceci:Linq to sql - Définir inheritancemapping sur la classe dérivée

[Table(Name = "dbo.ContentItem")] 
[InheritanceMapping(Code = "MyNameSpace.Items.SysRoot", Type = typeof(SysRoot), IsDefault = true)] 
[InheritanceMapping(Code = "MyNameSpace.Items.SysRecycleBin", Type = typeof(SysRecycleBin))] 
public partial class ContentItem : ICloneable, INotifyPropertyChanging, INotifyPropertyChanged { 
// some code here 
} 

Le code ci-dessus est dans mon projet de base et je voudrais carte nouvelles pagetypes dans mon projet blog par exemple en ajoutant l'attribut inheritancemapping sur une classe comme celui-ci :

[InheritanceMapping(Code = "MyNamespace.Blog.Items.BlogPostContainer", Type = typeof(BlogPostConntainer))] 
    public partial class BlogPostContainer : ContentItem { 
// some code here 
} 

Cela ne fonctionne pas, donc je me demande si quelqu'un a une solution à ce problème? Peut-être qu'il est possible d'écrire le mapping dans un fichier xml externe pour que l'héritage entre les projets fonctionne?

Répondre

0
+0

J'ai essayé cela mais mon quand j'utilise une cartographie basée sur le xml mon château windsor conteneur cesse de fonctionner. Savez-vous s'il est possible d'utiliser Castle Windsor avec une cartographie basée sur xml? – Marcus

+0

Une autre erreur que j'obtiens lorsque j'utilise le mappage basé sur xml est que l'un de mes membres n'a pas de traduction prise en charge par SQL? Mon mappingfile ressemble à ceci pour ce membre Marcus

+0

Je n'ai jamais utilisé castle windsor et linq pour sql ensemble j'ai peur . Personnellement, j'utilise NHibernate et j'ai trouvé cela beaucoup plus facile à utiliser que linq to sql. Si vous pouvez faire l'interrupteur je le ferais. – Castrohenge

0

je l'avais fait quelques erreurs dans mon mapping fichier et maintenant il fonctionne bien mais il devrait être préférable d'obtenir ce travail sans xml-mappings et des trucs comme ça, mais je suppose qu'il y n'est pas une autre solution pour cela.