繁体   English   中英

如何使用 Entity Framework C# 获取与特定表相关的表名

[英]How I can get the name of tables has relation with specific table using Entity Framework C#

如何使用 Entity Framework C# 获取与特定表有关系的表名?

   List<string> results = db.Database.SqlQuery<string>("SELECT name, OBJECT_NAME(parent_object_id) FROM sys.foreign_keys WHERE referenced_object_id = OBJECT_ID('" + currentmodel + "')").ToList();

您可以使用EF SqlQuery + sys.foreign_keys join sys.tables来做到这一点。

public IList<ForeignTableViewModl> QueryForeignTable(string tableName)
{
    using(var db = new Db())
    {
        var sql = @"
select
    fk.name as [FkName],
    tp.name as [ParentTable],
    tr.name as [RefrencedTable]
from sys.foreign_keys fk
inner join sys.tables tp on fk.parent_object_id = tp.object_id
inner join sys.tables tr on fk.referenced_object_id = tr.object_id
where tp.name = @p0
    ";
        return db.Database.SqlQuery<ForeignTableViewModl>(sql, tableName).ToList();
    }

}

public class ForeignTableViewModl
{
    public string FkName { get; set; }  
    public string ParentTable { get; set; } 
    public string RefrencedTable { get; set; }  
}

它会得到北风演示数据库的结果,如:

在此处输入图片说明


已完成,但此查询仅返回前 3 个 FK 我想返回所有 FK

public IList<ForeignTableViewModl> QueryForeignTable(string tableName)
{
    using(var db = new Db())
    {
        var sql = @"
select
    fk.name as [FkName],
    tp.name as [ParentTable],
    tr.name as [RefrencedTable]
from sys.foreign_keys fk
inner join sys.tables tp on fk.parent_object_id = tp.object_id
inner join sys.tables tr on fk.referenced_object_id = tr.object_id
where tp.name = @p0 or tr.name = @p0
    ";
        return db.Database.SqlQuery<ForeignTableViewModl>(sql, tableName).ToList();
    }

}

在此处输入图片说明

暂无
暂无

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

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