开发者

using nhibernate is there any way to map readonly property in interface

I have an interface named IEntity which till now has one concrete class named Entity, this interface has a read only property.开发者_开发技巧 I'd rather to map the interface,but because an interface cant have a private field,i cant use option camelcase field with prefix option to map it,so what can I do?

public interface IEntity 
{public readonly string Name{get;} }

public class Entity:IEntity
{public readonly string Name{get;}}

public class EntityMap:ClassMap<IEntityMap>
{
  //how to map the readonly property
}


Try:

<property name="Name" type="string" access="readonly"/>

NHibernate Read Only Property Mapping

and if you use Fluent:

Mapping a read-only property with no setter using Fluent NHibernate

I think this can be useful too:

How to map an interface in nhibernate?

updated

I think a first step is correct your code. Then try to post your mapping file or fluent configuration. We cannot help you if it is not clear what you want to achieve.


You map classes in NHibernate not interfaces. As others have pointed out, you are confusing the readonly keyword with a read-only property: the readonly keyword means that the field can only be set in the constructor. A read-only property has no or a private setter.

But I think you can achieve what you want using this:

public interface IEntity 
{
    string Name { get; } 
}

public class Entity : IEntity
{
    public string Name { get; private set; }
}

public class EntityMap : ClassMap<Entity>
{
    public EntityMap()
    {
        Map(x => x.Name);
    }
}

NHibernate uses reflection so it is able to set the Name property, but it is read-only in your application.


You can set ReadOnly property in ClassMap configuration.

public interface IEntity 
{
    string Name { get; } 
}

public class Entity : IEntity
{
    public string Name { get; }
}

public class EntityMap : ClassMap<Entity>
{
    public EntityMap()
    {
        Map(x => x.Name).Access.ReadOnly();
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜