Я использую Fluent Nhibernate 1.0 с Sharp Architecture 1.0
В настоящее время я пытаюсь отобразить ссылку на класс ZipCode. Текущий класс, который я отображаю, имеет столбец ZipCode, но класс zipcode гораздо более обширный, чем то, что необходимо для базового zipcode, отсюда и причины. (В основном класс Zipcode содержит лат. И длинный. Часовой пояс UTC и т. Д., Все, что доступно только для чтения)
Это мое отображение
References<ZipCode>(x => x.ZipCodeRadius, "ZipCode")
.Column("ZipCode")
.Cascade.None()
//.ForeignKey("FK_ZipCode")
.ReadOnly();
и когда я запускаю свои тесты, я получаю эту ошибку.
Метод инициализации CountryRepositoryTests.SetUp вызвал исключение. System.Data.SqlClient.SqlException: System.Data.SqlClient.SqlException: Столбец 'ZipCode.ZipCodeID' не является тем же типом данных, что и ссылка на столбец 'Address.ZipCode' во внешнем ключе 'FK8C1490CB2993CD44'.
Не удалось создать ограничение. Смотрите предыдущие ошибки ..
Я пытался добавить ForeignKey и Constrained lambdas, но они, похоже, ничего не добавляли.
У таблиц почтовых индексов есть идентификатор, но я не хочу отображать его, а хочу сопоставить столбец почтового индекса таблицы почтовых индексов, обратно в столбец почтового индекса таблицы адресов.
Если у кого-нибудь есть идеи, как мне обойти это, я был бы очень признателен.
Обратите внимание, как я делал выше, я не могу просто ссылаться на таблицу почтовых индексов и удалять свойство по адресу, потому что таблица почтовых индексов доступна только для чтения.
Это класс ZipCodeRadius.
[NotNullNotEmpty, Length(Max = 5)]
public virtual string ZipCodeName { get; set; }
[NotNullNotEmpty, Length(Max = 1)]
public virtual string ZipType { get; set; }
[NotNullNotEmpty, Length(Max = 10)]
public virtual string TimeZone{ get; set; }
public virtual int UTC { get; set; }
public virtual double Latitude { get; set; }
public virtual double Longitude { get; set; }
public virtual County County { get; set; }
Это адрес класса
protected Address() { }
public Address(User UpdateUser)
: base(UpdateUser)
{
this.UpdateUserId = UpdateUser.Id.ToString();
}
//[DomainSignature, NotNullNotEmpty]
//public virtual string Title { get; set; }
[NotNullNotEmpty, Length(Max = 50)]
public virtual string AddressLine1 { get; set; }
[Length(Max = 50)]
public virtual string AddressLine2 { get; set; }
[NotNullNotEmpty, Length(Max = 20)]
public virtual string City { get; set; }
public virtual StateOrProvince State { get; set; }
[NotNullNotEmpty, Length(Max = 10)]
public virtual string ZipCode { get; set;}
[Length(Max = 10)]
public virtual string ZipPlus { get; set; }
public virtual bool IsVerified { get; set; }
public virtual Country Country { get; set; }
public virtual ZipCode ZipCodeRadius { get; set; }
Это отображение таблицы ZipCode
Table("ZipCode");
Id(x => x.Id, "ZipCodeID");
Map(x => x.ZipCodeName, "ZipCode").AsVarChar(5);
Map(x => x.ZipType, "ZipType").AsVarChar(1);
Map(x => x.TimeZone, "TimeZone").AsVarChar(10);
Map(x => x.UTC, "UTC");
Map(x => x.Latitude, "Latitude");
Map(x => x.Longitude, "Longitude");
ReadOnly();
Cache.ReadOnly();