views:

20

answers:

1

I am trying to create a map to get results as like from below query. I am having hard time to get set Product mapping to set References to Product_Line on 3 columns as in where condition. How can I achieve this using fluent?

Product table: cId, ProjID, Line, etc., columns Product_Line table: cId, ProjID, Line, etc., columns

select f.* from Product f join Product_Line v on f.cId = v.CId and f.ProjID = v.ProjID and f.line = v.line

Thanks in Advance. RajeshC

First, thank you for looking into it and Here with more info: //Req: I want to query product such that if there is NO ProductLine, then I want to create a ProductLine, if there is one, then I'll update it.

public class ProductMap : ClassMap<Product>
{
    Id(x => x.Id);
    Map(x => x.CustomerId, "CustId");
    Map(x => x.ProjId, "PROJId");
    Map(x => x.LineNumber, "LineNumber");
    Map(x => x.ReportType, "ReportType");
// Reference to Product_Line? - this reference should be based on three columns (custId, ProjId, LineNumber)
    References(x => x.Line); 
}

public class ProductLineMap : ClassMap<ProductLine>
{
    Table("Product_Line");
    Map(x => x.CustomerId, "CustId"); //same column as Product.CustId
    Map(x => x.ProjId, "PROJId"); //Same as Product.ProjId
    Map(x => x.LineNumber, "LINENUMBER"); //Same as Product.LineNumber
    //etc.,
    //for me, this reference is not needed as I need from Product to ProductLine - one way. 
    //References(x => x.Product).Column("ProjId") //
}
A: 

We could give you a much better answer if you showed us your C# code and wrapped the SQL in < code > tags... Here's my guess at what I think you want:

public class ProductMap : ClassMap<Product>
{
    Id(x => x.Id);
    References(x => x.Line); // Reference to Product_Line?
    // etc. 
}

public class ProductLineMap : ClassMap<ProductLine>
{
    Table("Product_Line");
    Id(x => x.Id).Column("cId");
    References(x => x.Product).Column("ProjId")
}
Rafael Belliard
i updated with code sample. Thanks in advance.
rajeshC
How about using HasOne like this?HasOne(m => m.Line).ForeignKey("CustId").ForeignKey("PROJId").ForeignKey("LINENUMBER");
rajeshC

related questions