Быстрое отображение NHibernate ссылки на столбец, который не является столбцом ID

Я использую Быстрый Nhibernate 1.0 с Архитектурой Sharp 1.0

В настоящее время я пытаюсь отобразить ссылку на класс ZipCode. Текущий класс, который я отображаю, имеет столбец ZipCode, но класс индекса намного более обширен, чем, что необходимо для основного индекса, следовательно обоснование позади этого. (В основном класс Индекса содержит lat. и долго. Часовой пояс UTC и т.д., все вещи, которые только для чтения),

Это - мое отображение

            References<ZipCode>(x => x.ZipCodeRadius, "ZipCode")
            .Column("ZipCode")
            .Cascade.None()
            //.ForeignKey("FK_ZipCode")
            .ReadOnly();

и когда я запускаю свои тесты, я получаю эту ошибку.

Метод инициализации CountryRepositoryTests. SetUp выдал исключение. Система. Данные. SqlClient. SqlException: Система. Данные. SqlClient. SqlException: Столбец 'ZipCode. ZipCodeID' не является совпадающим типом данных как ссылкой на столбец 'Address. ZipCode' во внешнем ключе 'FK8C1490CB2993CD44'. Не удалось создать ограничение. Посмотрите предыдущие ошибки..

Я попытался добавить ForeignKey и Ограниченные лямбды, но они, казалось, не добавили что-либо.

Таблицы индекса имеют идентификатор, но я не хочу отображаться на это, скорее я хочу отобразиться на столбец индекса таблицы индекса, назад к столбцу индекса таблицы адресов.

Если у кого-либо есть какие-либо идеи, как я могу обойти это, я был бы очень признателен за его.

Отметьте, как я сделал выше, я не могу просто просто сослаться на таблицу индекса и отбросить свойство на адресе, потому что таблица индекса только для чтения.

Это - класс 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();
8
задан Pieter 17 August 2012 в 07:38
поделиться

1 ответ

, по-видимому, Hasone - это правильный способ сделать это .... Даже если я думал, что попробовал это, мне не хватало недвижимость ...

            HasOne<ZipCode>(x => x.ZipCodeRadius)
            .PropertyRef(x => x.ZipCodeName)
            .ForeignKey("ZipCode");
6
ответ дан 5 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: