繁体   English   中英

使用EF6 Store Functions for Entity Framework代码优先,我可以返回自定义类型吗?

[英]Using EF6 Store Functions for Entity Framework code-first, can I return a custom type?

我有一个实体类:

public class SomeClass {
    public int Id { get; set; }
    public int Value { get; set; }
    public string Name { get; set; }
}

使用Moozzyk的EF6 Store Functions for Entity Framework代码 ,我看到了将函数映射到实体类型的示例代码。

但是,当使用尚未映射为实体的类型时,我会收到一个异常,说该类型不是有效的实体类型。

例:

[DbFunction("MyContext", "GetValueSum")]
public IQueryable<SomeClassSummary> GetValueSum()
{
    return ((IObjectContextAdapter)this).ObjectContext
            .CreateQuery<SomeClassSummary>(string.Format("[{0}].{1}", GetType().Name,
            "[GetValueSum]()"));
}

如何将该函数的调用输出到特定类型?

要返回的类型必须具有与函数相同的列。 例如,如果函数返回列:

Name nvarchar
Sum  int

那么SomeClassSummary应该是:

public class SomeClassSummary {
    public string Name { get; set; }
    public int Sum { get; set; }
}

然后在上下文中,将类添加为复杂类型:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.ComplexType<SomeClassSummary>();
    modelBuilder.Conventions.Add(new FunctionsConvention<MyContext>("dbo"));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM