相关疑难解决方法(0)

从实体框架MetaData获取数据库表名称

我试图找到一种方法来获取给定实体类型的基础SQL表名称.我已经尝试过使用MetadataWorkspace查询,虽然我可以从对象或存储空间获取大量信息,但我似乎无法弄清楚如何在两者之间进行映射.

所以说我在对象模型中有一个名为Lookup的类型 - 如何在数据库中找到tablename(wws_lookups)?

我可以查询CSpace和SSpace的所有EntityType对象,我可以看到两者都正确列出,但我无法弄清楚如何从CSpace获取SSpace.

有没有办法做到这一点?

.net entity-framework database-metadata

48
推荐指数
8
解决办法
6万
查看次数

EF Code First从IQueryable <T>中删除批次?

我知道这在LINQ-to-SQL中是可行的,而且我已经看到了点点滴滴让我相信它在EF中是可能的.是否有扩展可以做这样的事情:

var peopleQuery = Context.People.Where(p => p.Name == "Jim");

peopleQuery.DeleteBatch();
Run Code Online (Sandbox Code Playgroud)

DeleteBatch刚采分开peopleQuery并创建一个SQL语句删除所有相应的记录,然后执行查询,而不是直接将标记为删除所有的单位和有它由一个做他们的一个.我以为我在下面的代码中找到了类似的东西,但它立即失败,因为实例无法转换为ObjectSet.有谁知道如何解决这个问题与EF Code First一起使用?或者知道在哪里有这样做的例子?

public static IQueryable<T> DeleteBatch<T>(this IQueryable<T> instance) where T : class
{
    ObjectSet<T> query = instance as ObjectSet<T>;
    ObjectContext context = query.Context;

    string sqlClause = GetClause<T>(instance);
    context.ExecuteStoreCommand("DELETE {0}", sqlClause);

    return instance;
}

public static string GetClause<T>(this IQueryable<T> clause) where T : class
{
    string snippet = "FROM [dbo].[";

    string sql = ((ObjectQuery<T>)clause).ToTraceString();
    string sqlFirstPart = sql.Substring(sql.IndexOf(snippet));

    sqlFirstPart = sqlFirstPart.Replace("AS [Extent1]", "");
    sqlFirstPart = sqlFirstPart.Replace("[Extent1].", "");

    return …
Run Code Online (Sandbox Code Playgroud)

.net sql extension-methods entity-framework ef-code-first

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

EF 4.1 CodeFirst - 一对多级联删除

我正在尝试从父集合导航属性中删除子实体.b/t父母和孩子之间建立了一对多的关系.删除子项后,我希望数据库删除assoc.来自数据库的子记录,而不是通过使外键无效而孤立的记录.

有没有办法做到这一点,而无需通过DBContext中的子DbSet显式删除子进程?

我已经看到了与此主题相关的其他帖子,但我想我会将代码提炼为更简单的测试用例:

using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using NUnit.Framework;

namespace basic_tests
{
[TestFixture]
public class OneToManyTests
{
    #region Setup/Teardown

    [SetUp]
    public void SetUp()
    {
        _context = new Context();
        Database.SetInitializer(new DataInitializer());
    }

    #endregion

    private Context _context;

    [Test]
    public void CanRemoveChildThroughParent()
    {
        /**

        this throws : "System.Data.Entity.Infrastructure.DbUpdateException : An error occurred while saving entities that do not expose foreign key properties for              their relationships. The EntityEntries property will return null because a single entity cannot be identified as the source …
Run Code Online (Sandbox Code Playgroud)

one-to-many ef-code-first entity-framework-4.1

3
推荐指数
1
解决办法
3778
查看次数