Предполагая, что поле MasterAccount
в Закупки соответствует MasterAccountNumber
в MasterAccounts ... создать представление в sql с форматом таблицы, который вы пытаетесь отобразить: 1007 *
CREATE VIEW [dbo].[v_PurchaseMasterAccountName]
AS
SELECT dbo.Purchases.Id, dbo.Purchases.Name, dbo.Purchases.MasterAccount, dbo.Purchases.BuyerAccount, dbo.MasterAccounts.Name AS MasterAccountName
FROM dbo.MasterAccounts INNER JOIN
dbo.Purchases ON dbo.MasterAccounts.MasterAccountNumber = dbo.Purchases.MasterAccount
Создайте ClassMap для сопоставления вашего вида:
public class Purchase
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string MasterAccountName { get; set; }
public virtual string MasterAccount { get; set; }
public virtual string BuyerAccount { get; set; }
}
public class PurchaseClassMap : ClassMap<Purchase>
{
public PurchaseClassMap()
{
Table("v_PurchaseMasterAccountName");
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.MasterAccount);
Map(x => x.BuyerAccount);
Map(x => x.MasterAccountName);
}
}
Убедитесь, что ваша ClassMap подобрана в ваших FluentMappings.
UPDATE:
Это может работать вместо:
public class PurchaseMap : ClassMap<Purchase>
{
public PurchaseMap()
{
Table("Purchases");
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.MasterAccount);
Map(x => x.BuyerAccount);
Map(x => x.MasterAccountName).ReadOnly()
.Formula("(SELECT TOP 1 MasterAccounts.Name FROM MasterAccounts WHERE MasterAccounts.MasterAccountNumber = [MasterAccount] AND MasterAccounts.MasterAccountNumber = [BuyerAccount])");
}
}
Спасибо Даррену Коппу за указатель на опцию Формулы.