FluentNHibernate使用FluentMappings忽略ClassMap中的属性我在我的项目中使用NHibernate3.1和FluentNHibernate作为ORM。我需要FluentNHibernate来忽略POCO的属性。起初看起来我的帖子可能与这篇帖子有完全相同的问题,但事实并非如此。我的复杂性首先来自于POCO是在与地图不同的程序集中定义的,我正在为POCO使用流畅的地图。我还有其他要求来编写ingore-property代码,而不是在会话工厂配置发生的地方(这发生在模块外部的集中位置),而是作为定义映射的模块的一部分。理想情况下,我认为正确的地方是具体的ClassMap实现,因为它确切地知道如何向ORM描述POCO。但是,我坚持这样做主要是因为这是我第一次使用NHibernate及其流畅的API。到目前为止,我对它的功能性和扩展性印象非常好,希望有一种方法可以通过将映射相关代码封装在相应的模块中来实现我的需求。这是我的配置,从一个集中的地方:Listassemblies=GetModules().Select(x=>x.GetType().Assembly).ToList();ISessionFactorynhibernateSessionFactory=Fluently.Configure().Mappings(m=>assemblies.ForEach(asm=>m.FluentMappings.AddFromAssembly(asm))).Database(MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(DatabaseConfig.Instance.ConnectionString)).ExposeConfiguration(c=>newSchemaUpdate(c).Execute(true,true)).BuildSessionFactory();我使用来自ClassMapinheritance的准类映射:publicclassUser{publicvirtualintID{get;放;}publicvirtualString用户名{get;放;}publicvirtualStringPassword{get;放;}publicvirtualDateTimeDateCreated{get;放;}publicvirtualDateTimeDateModified{get;放;}//必须忽略publicstringComputedProperty{get{...}}}publicclassUserMap:ClassMap{publicUserMap(){Table("User");Id(x=>x.ID).GeneratedBy.Identity();映射(m=>m.Username).Not.Nullable().Length(255)。UniqueKey("User_Username_Unique_Key");映射(m=>m.Password).Not.Nullable().Length(255);映射(m=>m.DateCreated).Not.Nullable();映射(m=>m.DateModified).Not.Nullable();我认为你是对的,ClassMap是忽略此属性的最佳位置示例:.Override(map=>{map.IgnoreProperty(x=>x.YourProperty);});文档:https://github.com/jagregory/fluent-nhibernate/wiki/Auto-mapping#ignoring-properties至于从另一个程序集获取映射,应该就这么简单(取决于你当前的配置):.映射(m=>{m.FluentMappings.AddFromAssemblyOf();});我知道这篇文章有点旧,但我还是要发帖,因为我没有找到关于这个主题的任何最新帖子。我想最简单的方法是为我们不希望持久保存到表中的每个属性添加一个属性。通过添加扩展名,检查它是否有例如。有一个[NoEntity]属性。//////告诉单个属性不要持久保存到表中。///publicclassNoEntity:Attribute{}//////忽略属性的扩展///publicstaticclassFluentIgnore{//////忽略单个属性。///标有此属性的属性将不会持久保存到表中。//////IPropertyIgnorer///要忽略的类型。///要忽略的属性。publicstaticIPropertyIgnorerSkipProperty(thisIPropertyIgnorerp,TypepropertyType){returnp.IgnoreProperties(x=>x.MemberInfo.GetCustomAttributes(propertyType,false).Length>0);}}并在FluentlyConfig中设置:.SkipProperty(typeof(NoEntity));}).Where(IsEntity))).ExposeConfiguration(ValidateSchema).ExposeConfiguration(BuildSchema).BuildConfiguration();贾斯汀不会。这是一个扩展的事情。只是你想要的属性被忽略了。以上是C#学习教程:FluentNHibernate使用FluentMappings忽略ClassMap中属性共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——publicclassPerson:IEntity{publicvirtualstringName{..}publicvirtualstringLastname{..}[NoProperty]publicvirtualstringFullName{//未创建的属性get{returnName+""+Lastname;}}}publicclassGroup:IEntity{publicvirtualstringFullName{..}//创建的属性}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
