I've just spend 3 hours searching reading en trying to get this simple thing to work:
The Class (or Entity)
namespace EntryService.DAL.Domain
[Serializable]
public class ClientEntranceInfo
{
public virtual ClientEntranceInfoKey Key { get; set; }
public virtual int SportSchoolNumber
{
get { return Key.SportSchoolNumber; }
set { Key.SportSchoolNumber = value; }
}
public virtual int PassNumber
{
get { return Key.PassNumber; }
set { Key.PassNumber = value; }
}
public virtual int ClientNumber
{
get { return Key.ClientNumber; }
set { Key.ClientNumber = value; }
}
public virtual DateTime EntranceTime { get; set; }
public virtual DateTime UpdateDateTime { get; set; }
public ClientEntranceInfo()
{
Key = new ClientEntranceInfoKey();
}
}
The ClientEntranceInfoKey
namespace EntryService.DAL.CompositeKeys
[Serializable]
public class ClientEntranceInfoKey
{
public virtual int SportSchoolNumber { get; set; }
public virtual int PassNumber { get; set; }
public virtual int ClientNumber { get; set; }
public ClientEntranceInfoKey()
{
}
public ClientEntranceInfoKey(int sportSchoolNumber, int passNumber, int clientNumber)
{
SportSchoolNumber = sportSchoolNumber;
PassNumber = passNumber;
ClientNumber = clientNumber;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != typeof (ClientEntranceInfoKey)) return false;
return Equals((ClientEntranceInfoKey) obj);
}
public bool Equals(ClientEntranceInfoKey other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return other.SportSchoolNumber == SportSchoolNumber && other.PassNumber == PassNumber &&
other.ClientNumber == ClientNumber;
}
public override int GetHashCode()
{
unchecked
{
int result = SportSchoolNumber;
result = (result*397) ^ PassNumber;
result = (result*397) ^ ClientNumber;
return result;
}
}
}
The Database Table ClientEntranceInfo (MySQL)
SportSchoolNumber INT(11) PK NN
PassNumber INT(11) PK NN
ClientNumber INT(11) PK NN
EntranceTime (DATETIME) NN
Very simple I would think.
So.....
var cfg = new MappingsConfiguration();
return Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(ConnString))
.Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<ClientEntranceInfo>(cfg)
.Override<ClientEntranceInfo>(map => map.IgnoreProperty(cei => cei.UpdateDateTime))
.Override<ClientEntranceInfo>(map => map.CompositeId().ComponentCompositeIdentifier
<ClientEntranceInfoKey>(x => x.Key).KeyProperty(
x => x.SportSchoolNumber).KeyProperty(
x => x.ClientNumber).KeyProperty(
x => x.PassNumber))))
.BuildSessionFactory();
}
With cfg = instance of
public class MappingsConfiguration : DefaultAutomappingConfiguration
{
public override bool ShouldMap(Type type)
{
return type.Namespace == "EntryService.DAL.Domain";
}
}
gives me this exception:
An association from the table ClientEntranceInfo refers to an unmapped class: EntryService.DAL.CompositeKeys.ClientEntranceInfoKey
Is there somewhere a simple example about this???