EF框架中外键问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF框架中外键问题相关的知识,希望对你有一定的参考价值。
小弟新手,最近在学习mvc4,遇到点小问题,请教各位大虾。部门表(Dept)需要一个字段来标识当前部门的上级部门(parentId),这就相当于本表的主键同时是本表的外键,在创建实体类的时候不知道怎么搞了。网上搜了,貌似不是很靠谱。跪谢!!
参考技术A 可以直接关联的,在著名的罗斯文数据库的Employee表就是这种情况,员工有管理者,自己的主键又作为外键,没什么问题。追问我知道可以写,我想知道怎么写
public class Department
[Key]
public int DeptId get; set;
public virtual Department ParentDept get; set;
这么写外键保存不了
你就在数据库里面先设置了,然后更新到model不就有了?
追问EF是code first模式,根据model生成数据库,表里外键已经生成了,View层中没有
追答可以混用两种模式的,从数据库生成到model,只选择你那个表就行了。
如何使用java计算SQL数据库中外键的数量[重复]
【中文标题】如何使用java计算SQL数据库中外键的数量[重复]【英文标题】:How to count the number of foreign keys in a SQL database using java [duplicate] 【发布时间】:2018-09-02 05:21:21 【问题描述】:如何使用java计算SQL数据库中的外键数。我得到了一个数据库,里面有很多表。我必须计算 id 中存在的外键总数。我正在通过 Java 执行查询。
【问题讨论】:
查询information_schema.STATISTICS表..我相信INDEX_TYPE
列会告诉你该列是否是外键。
docs.oracle.com/javase/8/docs/api/java/sql/…。如果您使用的是 JDBC。
【参考方案1】:
您所要做的就是在您的数据库上使用 Java 执行以下查询。
SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_SCHEMA = '<database>'
参考:How do I see all foreign keys to a table or column?
【讨论】:
【参考方案2】:供应商可以独立使用 DatabaseMetaData 及其 getExportedKeys 和 getImportedKeys 在所有表上。
DatabaseMetaData meta = conn.getMetaData();
try (ResultSet rs = meta.getExportedKeys(conn.getCatalog(), null, null))
while (rs.next())
String pkTable = rs.getString("PKTABLE_NAME");
String fkTable = rs.getString("FKTABLE_NAME");
String fkColumn = rs.getString("FKCOLUMN_NAME");
int keySeq = rs.getInt("KEY_SEQ");
...
【讨论】:
以上是关于EF框架中外键问题的主要内容,如果未能解决你的问题,请参考以下文章