Необязательные многие-к-одному / ссылки приводят к нарушениям внешнего ключа при вставке - PullRequest
0 голосов
/ 24 октября 2011

У меня в настоящее время есть следующие отношения: ProductUom -> ProductImage

Они оба имеют одинаковые первичные ключи: PROD_ID и UOM_TYPE

У меня они отображаются так:

public ProductUomMap()
{
    Table("PROD_UOM");

    CompositeId()
        .KeyReference(x => x.Product, "PROD_ID")
        .KeyProperty(x => x.UomType, "UOM_TYPE");

    References(x => x.Image)
        .Columns(new string[] { "PROD_ID", "UOM_TYPE" })
        .Not.Update()
        .Not.Insert()
        .NotFound.Ignore()
        .Cascade.All();
}

public ProductImageMap()
{
    Table("PROD_UOM_IMAGE");

    CompositeId()
        .KeyReference(x => x.ProductUom, new string[] {"PROD_ID", "UOM_TYPE"});

    Map(x => x.Image, "PROD_IMAGE").Length(2147483647);
}

Всякий раз, когда я создаю объект ProductUom с ProductImage, он сначала пытается вставить ProductImage, что приводит к нарушению внешнего ключа . Клянусь, это когда-то работало с отображением, которое у меня есть, но сейчас это не так.

Мне нужно, чтобы ProductImage был Reference (много-к-одному), потому что отношения здесь необязательны, и я хочу иметь возможность лениво загружать изображения продуктов. Вставки работают правильно, если я использую отображение HasOne (один-к-одному), но при этом я не могу загрузить лениво, и запрос ProductUom, кажется, вызывает проблемы.

Есть что-то, что я здесь упускаю? Как можно изменить это отображение, чтобы получить то, что я хочу?

1 Ответ

0 голосов
/ 02 ноября 2011

вы можете использовать LazyLoaded Properties? Тогда вы можете использовать что-то вроде этого

Join("PROD_UOM_IMAGE", join =>
{
    join.KeyColumn("PROD_ID", "UOM_TYPE");
    join.Optional();
    join.Map(x => x.Image, "PROD_IMAGE").Length(2147483647).LazyLoad();
}

другой вариант:

Id().GeneratedBy.Foreign(x => x.ProductUom);

не могу проверить это здесь, хотя я пишу на мобильном

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...