我有一个使用EF作为ORM的应用程序.数据库曾经有一个架构,dbo,一切都运行正常.我最近将我的表组织成4种不同的模式.一个模式的某些表依赖于驻留在不同模式上的表.所有似乎都在SQL方面有效.
在应用程序端,通过EF的所有数据库交互都不再起作用.代码编译,模式在解决方案中可见,模型映射指向正确的模式,但是一旦我尝试向表中插入行,它就不起作用.
我看过一些关于使用多个模式的帖子需要使用多个DBContexts,但我宁愿使用一个DBContext.我的所有模式都拥有相同的所有者dbo,我没有看到使用多个DBContexts的原因.
有谁知道是否有办法实现这一目标?
我需要在数据库模式中存储聊天对话.我使用这个数据库的方式是我会在网站上发布聊天记录.每次聊天不会超过20个回复.有人可以为此建议一个架构吗?
我目前正在为本地协会开发成员管理,目前我正在开发数据库架构.我想与您分享以改进它并提供其他基于角色的访问模型(RBAC)的示例.我很感激任何建设性的批评,特别是我在表格之间使用的关系.
链接到highres:http://i.stack.imgur.com/WG3Vz.png
继承架构:
这个怎么运作:
我将现有客户端(实际上是关联成员)从外部应用程序映射到我的管理应用程序.(客户表)
该关联在Division,Subdivisions等(intern_structures表)中构建.每个客户都可以成为多个部门,细分,部门等的成员.
每个客户都可以在诸如总裁,精算师,财务主管等会员(分部......)中担任一个或多个角色,并且每个角色都有某些特权,角色的所有者可以在其部门,细分,部门等中应用其他人. .
凭证连接到应用程序的特定操作.凭证的所有者可以对其范围内的其他成员执行此操作.可以有多个"独立"应用程序,但它们都共享相同的身份验证/授权系统.
应用程序在模块/子模块/动作等中构造.示例可以是"个人详细信息"模块,该模块包含一个名为"图片"的子模块,您可以在此图片上应用"查看,删除,编辑"操作.但是你不能删除任何图片,除非你试图删除图片的人在你有足够角色的部门/部门.
内部和应用程序结构都是树,实现为邻接列表和嵌套集.邻接列表确保完整性,嵌套集允许我快速遍历树.
一个例外是您可以直接向某人提供某些凭据(client_credentials).如果某人需要对不属于他的divsion/section的人执行某些操作,则需要这样做.
因此,某人可以成为多个divsions/sections的成员,并在他所属的每个部门/部门中获得多个角色.我将通过他的多个角色合并某人拥有的所有凭据.凭证总是积极的,意味着限制性凭证是不可能的.
我们遇到了将Web应用程序部署到另一个环境的小问题.我们使用Entity Framework Code First方法创建了应用程序的数据库(db自动从模型创建).在此开发环境中,我们使用集成安全性,并在dbo用户下创建表.这些表就像
[dbo].[myTable]
对于我们的其他环境,我们使用DB的用户名/密码身份验证.我们编写了表格并在数据库上创建了它们.所以他们现在的名字就像
[myDbUser].[myTable]
运行应用程序时,我们总会遇到问题
无效的对象名称'dbo.myTable'.
似乎代码仍然试图寻找一个不存在的dbo表,因此失败了.
任何人都可以解释这个问题吗?Entity Framework从哪里获取此dbo前缀?
谢谢
我想从OdbcConnection获取所有"表"名称,并且对于所有"表"名称,我想要接收所有列名.
所以我遇到了OdbcConnection.GetSchema()
功能性问题.我只需使用即可获得所有表名connection.GetSchema("Tables")
.但现在我想获取这些表的列信息.我注意到connection.GetSchema("Columns")
会给我列信息,但这只是从数据源中的随机/第一个(?)"表"(使用Windows CSV驱动程序)中提供它,这没有帮助.
最具挑战性的部分是,必须与任何(大多数)ODBC驱动程序一起使用.我不知道将使用哪个底层数据源.
有任何想法吗?
我想知道如何代表人际关系Aerospike
?我意识到这是一个Key-Value商店,但有一个例子可以给出吗?
例如:如果系统中有用户,我想获得与该用户关联的Thing记录列表.
我有以下 JPA 2.0 实体
@Entity
@Inheritance(strategy= InheritanceType.JOINED)
public abstract class BookKeepingParent implements Serializable {
@Id
protected Long Id;
...
}
@Entity
public class Employee extends BookKeepingParent {
private String name;
@ManyToOne
private Role role;
...
}
@Entity
public class Role extends BookKeepingParent {
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
我想让 JPA 为我生成表,因为它可以更轻松地在多个位置安装。我通常会期望它产生这个:
CREATE TABLE bookkeepingparent (
id bigint NOT NULL,
dtype character varying(31),
CONSTRAINT bookkeepingparent_pkey PRIMARY KEY (id )
)
CREATE TABLE role (
id bigint NOT NULL,
name character varying(255), …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个用户可以加入和创建组的系统.在这些组中,成员可以创建主题并回复已创建的主题,因此我想知道您对以下哪种方法最佳的看法:创建两个表,groups_posts和group_topics:
--group_topics
id PK
group_id int FK
user_id int FK
title varchar(50)
content varchar(500)
status int
--group_posts
id PK
topic_id int FK
user_id int FK
content varchar(500)
status int
Run Code Online (Sandbox Code Playgroud)
或创建一个唯一的表,group_tposts:
--group_tposts
id PK
group_id int FK
user_id int FK
is_topic boolean
title varchar(50)
content varchar(500)
status int
Run Code Online (Sandbox Code Playgroud) 药膏!
关于SO 的另一个问题/答案的一部分(以及声称相同的其他陈述):
如果您通过JPA更新数据库模式(通常不是一个好习惯)
您是否应该使用JPA实现来生成数据库模式?
无论如何,我必须自己模拟实体和关系.我需要定义约束,例如notnull,主键和外键,数据类型和大小.
假设正在使用的JPA实现在其DDL模式创建代码中没有任何缺陷,并且假设我确实正确地指定了所有JPA约束,关系等,那么由JPA实现创建的db模式应该完全相同 - 如果不是更好 - 作为我自己手工制作的架构,对吧?
这不包括"特殊情况",例如(业务逻辑 - )特定的INSERT触发器等,因为这些根本不能由JPA实现生成(据我所知,如果我错了,请纠正我).
你对此有何看法?
我现在首先手工编写我的数据库模式,然后设置JPA约束,关系等,让JPA实现也创建一个数据库模式.然后我比较两个模式,看看我是否正确完成了设置.这当然意味着我还必须指定与我手工模式相同的列名等.
使我的问题更加准确; 我不会盲目相信ORM框架为我生成架构.我宁愿知道模式在我的脑海中如何看待,然后配置框架以匹配它.
我想你可以手工创建更多/最有效的架构,但毕竟我需要(或者更愿意)将它们与ORM框架一起使用.因此,虽然我不应该这样做,但在创建数据库模式时,我需要牢记ORM框架的局限性.
因此,我使用ORM框架以便不必关心RDBMS细节,让我的应用程序使用特定于RDBMS的DDL创建模式的重点是什么?
如果我必须使用一些现有的和异乎寻常的模式,我不需要(重新)创建模式,以及我可能无法使用这样的通用工具作为ORM框架.
db-schema ×9
mysql ×3
jpa ×2
.net ×1
aerospike ×1
credentials ×1
dbcontext ×1
eclipselink ×1
foreign-keys ×1
java ×1
odbc ×1
orm ×1
rbac ×1
schema ×1