实体框架异步插入(如果不存在)

时间:2015-06-26 19:55:30

标签: entity-framework asynchronous

我正在尝试实现Entity Framework添加对象(如果它尚不存在)。我需要做异步函数。

这是我写的,但它不起作用(没有例外,但不起作用 - 它不会将对象插入数据库):

public async Task<Manufacturer> InsertNewManufacturer(Manufacturer manufacturer)
{
        Manufacturer m = await db.Manufacturers.Where(ma => ma.Name == manufacturer.Name).FirstOrDefaultAsync();

        if (m != null)
        {
            return m;
        }
        else
        {
            db.Manufacturers.Add(manufacturer);
            await db.SaveChangesAsync().ConfigureAwait(false);
            return manufacturer;
        }
    }

1 个答案:

答案 0 :(得分:0)

我是这样做的 -

public async Task<Manufacturer> InsertNewManufacturer(Manufacturer manufacturer)
    {
        return await insert(manufacturer);
    }

    private async Task<Manufacturer> insert(Manufacturer m)
    {
        Task<int> t = Task.Factory.StartNew(() =>
        {
            return db.Manufacturers.Count(ma => ma.Name == m.Name);
        });
        Task.WaitAll(t);
        if (t.Result == 0)
        {
            db.Manufacturers.Add(m);
            await db.SaveChangesAsync();

        }
        return m;
    }

它是否可以异步工作?