相关疑难解决方法(0)

实体框架使用LEFT JOIN语句为视图返回错误数据

我遇到了Entity Framework的奇怪行为.EF生成的DbContext对象返回与数据库中的实际数据不同的数据.

请考虑以下数据库架构: 数据库架构

Letter 数据:

Id      Value   LanguageId
------- ------- ----------
1       A       1
2       A       2
3       B       1
4       B       2
Run Code Online (Sandbox Code Playgroud)

Language 数据:

Id      Value
------- -------
1       English
2       Russian
Run Code Online (Sandbox Code Playgroud)

我也有以下简单的观点LetterLanguageView.请注意,它使用LEFT JOIN子句,因为Letter.LanguageId可能是NULL:

SELECT dbo.Letter.Value as Letter, dbo.Language.Value as Language
FROM dbo.Letter
LEFT JOIN dbo.Language ON dbo.Letter.LanguageId = dbo.Language.Id
Run Code Online (Sandbox Code Playgroud)

这个视图的结果非常简单:

Letter  Language
------- --------
A       English
A       Russian
B       English
B       Russian
Run Code Online (Sandbox Code Playgroud)

但是,当我从Entity Framework使用此视图时,我得到以下结果:

错误的数据

如您所见,该Language物业是错误的,根本没有俄语.

如果您想知道,这是用于读取此数据的代码段: …

c# sql entity-framework

10
推荐指数
1
解决办法
3131
查看次数

没有为此对象定义无参数构造函数 - Hangfire调度程序

我刚刚在我的MVC网站上安装了Hangfire包.我创建了一个Startup类

[assembly: OwinStartup(typeof(Website.Startup))]

namespace Website
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            Hangfire.ConfigureHangfire(app);
            Hangfire.InitializeJobs();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个Hangfire课程

public class Hangfire
{
    public static void ConfigureHangfire(IAppBuilder app)
    {
        app.UseHangfire(config =>
        {
            config.UseSqlServerStorage("DefaultConnection");
            config.UseServer();
            config.UseAuthorizationFilters(); 
        });
    }

    public static void InitializeJobs()
    {
        RecurringJob.AddOrUpdate<CurrencyRatesJob>(j => j.Execute(), "* * * * *");
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,我在一个单独的类库中创建了一个新工作

public class CurrencyRatesJob
{
    private readonly IBudgetsRepository budgetsRepository;

    public CurrencyRatesJob(IBudgetsRepository budgetsRepository)
    {
        this.budgetsRepository = budgetsRepository;
    }

    public void Execute()
    {
        try
        {
            var budgets …
Run Code Online (Sandbox Code Playgroud)

c# scheduler hangfire

5
推荐指数
1
解决办法
4219
查看次数

标签 统计

c# ×2

entity-framework ×1

hangfire ×1

scheduler ×1

sql ×1