Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework F#->;EF生成错误的sql_Entity Framework_F#_Ef Code First_Entity Framework 4.1 - Fatal编程技术网

Entity framework F#->;EF生成错误的sql

Entity framework F#->;EF生成错误的sql,entity-framework,f#,ef-code-first,entity-framework-4.1,Entity Framework,F#,Ef Code First,Entity Framework 4.1,我试图在EF中建立一个简单的多对一关系,并将其定义为: type Car() = [<DefaultValue>] val mutable private id : int member x.ID with get() = x.id and set(v) = x.id <- v [<DefaultValue>] val mutable private carName : string member x.CarName with get

我试图在EF中建立一个简单的多对一关系,并将其定义为:

type Car() =
    [<DefaultValue>] val mutable private id : int
    member x.ID with get() = x.id and set(v) = x.id <- v
    [<DefaultValue>] val mutable private carName : string
    member x.CarName with get() = x.carName and set(v) = x.carName <- v
    [<DefaultValue>] val mutable private dealer : Dealer
    member x.Dealer with get() = x.dealer and set(v) = x.dealer <- v

and Dealer() =
    [<DefaultValue>] val mutable private id : int
    member x.ID with get() = x.id and set(v) = x.id <- v
    [<DefaultValue>] val mutable private name : string
    member x.Name with get() = x.name and set(v) = x.name <- v
    [<DefaultValue>] val mutable private cars : seq<Car>
    member x.Cars with get() = x.cars and set(v) = x.cars <- v

type MyContext() = 
    inherit DbContext("MyContext")
    [<DefaultValue(true)>] val mutable private cars : DbSet<Car>
    member x.Cars with get() = x.cars and set(v) = x.cars <- v
    [<DefaultValue(true)>] val mutable private dealers : DbSet<Dealer>
    member x.Dealers with get() = x.dealers and set(v) = x.dealers <- v

现在是我的问题,,为什么要将汽车类型中定义的经销商转换为
Dealer\u ID
,而不是
DealerID?

尝试使用或指定此属性的显式映射。

尝试使用或指定此属性的显式映射。

您的汽车表中有哪些列?DealerID还是Dealer\u ID?您是如何创建该表的?@Ladislav Mrnka-在我的
Car
表中,引用
经销商的列被命名为
DealerID
-我自己创建的表(未生成)似乎不是F#特定的问题。(F#引号刚刚转换为C#风格的表达式树,表达式树包含属性的MemberInfo,因此不能包含错误的名称)。这是缺少映射的问题。如果您创建表并使用自己的列名作为外键,则必须在ModelCreating的
中显式映射它。您的Car表中有哪一列?DealerID还是Dealer\u ID?您是如何创建该表的?@Ladislav Mrnka-在我的
Car
表中,引用
经销商的列被命名为
DealerID
-我自己创建的表(未生成)似乎不是F#特定的问题。(F#引号刚刚转换为C#风格的表达式树,表达式树包含属性的MemberInfo,因此不能包含错误的名称)。这是缺少映射的问题。若创建表并使用自己的列名作为外键,则必须在ModelCreating的
中显式映射它。
let ctx = new MyContext()
Query.query <@ seq { for x in ctx.Cars do if x.CarName = "Volvo" then yield x.Dealer.Name } @>
SELECT 
[Extent2].[Name] AS [Name]
FROM  [dbo].[Cars] AS [Extent1]
LEFT OUTER JOIN [dbo].[Dealers] AS [Extent2] ON [Extent1].[Dealer_ID] = [Extent2].[ID]
WHERE N'Volvo' = [Extent1].[CarName]