这可能只是因为我对EF Code First流畅API的了解不足,但我很难过.
我想模拟以下内容:
我想要的表格结构如下:
组
用户
SecondaryGroupAssignments
我一直在试图用EF Code First模拟这个问题,但我无法接受用户和组之间的关系.很抱歉没有发布任何.NET代码(我很高兴),但无论如何它可能都是错的.
有没有办法制作EF模型呢?我假设我必须使用Fluent API进行某种配置.也许更好的问题是:Fluent API是否有任何好的,明确的参考?
谢谢!
database fluent-interface relationships ef-code-first entity-framework-4.1
我有一个"主桌",称之为Customers:
CREATE TABLE Customers (
CustomerID int PRIMARY KEY NOT NULL,
FirstName nvarchar(50),
LastName nvarchar(50)
)
Run Code Online (Sandbox Code Playgroud)

我有一个"卫星表",称之为Customer_IllegallyObtainedInformation:
CREATE TABLE Customer_IllegallyObtainedInformation (
CustomerID int PRIMARY KEY NOT NULL,
CellPhonePin int,
SexualOrientation varchar(20),
EmailPassword varchar(50)
)
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是从Illegal表回到主Customers表的外键约束:

换一种说法:
Customer 没有一个Illegal条目Illegal没有进入Customer我的本能是在SQL Server数据库图中拖动
Illegal表TO的Customers表指示SQL Server Customers_IllegallyObtainedInformation是关系中的"子".相反,SQL Server中发生的事情使它成为一对一的关系:

这意味着如果您尝试插入a …
sql-server table-relationships sql-server-2008-r2 relationships
我有一个模型Post,它有一个hasMany('Comments')关系.我想通过评论关系获取所有帖子,但只有每个帖子的最新评论.并且因为有成千上万的帖子每个都有成千上万的评论,所以由于性能问题(即加载每个帖子的所有评论然后执行$ post-> comments [0] - > value),这样的选项是不可能的:
Post::with('comments' => function($query){
$query->orderBy('created_at','desc')
});
Run Code Online (Sandbox Code Playgroud)
我也不能这样做:
Post::with('comments' => function($query){
$query->orderBy('created_at','desc')->limit(1)
});
Run Code Online (Sandbox Code Playgroud)
因为这不起作用.
我完全相信我不是唯一一个遇到这个问题的人,我确实设法找到了一些"尝试解决方案"但不是一个稳定的工作代码示例.有人可以帮忙吗?
我有一个似乎常见的问题,但我无法弄清楚如何达到预期的结果.我有一个嵌套的实体,其上定义了导航属性,如下图所示.

对于给定的MapLine,地图点集合可能非常大,并且MapLayer可能有相当多的MapLine.
这里的问题是使用Entity Framework将MapLayer对象插入数据库并保持导航属性定义的关系的最佳方法是什么?
标准的实体框架实现
dbContext.MapLayers.Add(mapLayer);
dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
导致大量内存峰值和非常差的返回时间.
我已经尝试实现EntityFramework.BulkInsert包, 但它不尊重对象的关系.
这似乎是某人之前遇到的问题,但我似乎无法找到解释如何完成此任务的任何资源.
更新
我试图实现理查德提供的建议,但我不明白我将如何为嵌套实体(例如我所描述的实体)进行此操作.我假设我需要插入MapLayer对象,然后是MapLines,然后使用MapPoints来表示数据库中的PF/FK关系.我目前正在尝试以下代码,但这似乎不正确.
dbContext.MapLayers.Add(mapLayer);
dbContext.SaveChanges();
List<MapLine> mapLines = new List<MapLine>();
List<MapPoint> mapPoints = new List<MapPoint>();
foreach (MapLine mapLine in mapLayer.MapLines)
{
//Update the mapPoints.MapLine properties to reflect the current line object
var updatedLines = mapLine.MapPoints.Select(x => { x.MapLine = mapLine; return x; }).ToList();
mapLines.AddRange(updatedLines);
}
using (TransactionScope scope = new TransactionScope())
{
MyDbContext context = null;
try
{
context = new MyDbContext();
context.Configuration.AutoDetectChangesEnabled = false;
int count = 0; …Run Code Online (Sandbox Code Playgroud) 我正在构建一个需要核心数据关系的应用程序:
entityA <<---> entityB (e.g. any given entityA can hold many entityB objects)
Run Code Online (Sandbox Code Playgroud)
我有两个带有entityA列表项的表视图,我希望能够在任何给定的entityA对象中存储entityB对象.
我刚开始使用与核心数据的关系(对于swift来说相当新),并且想学习如何使这项工作成功.有没有人有任何快速的教程,这对我来说有用,或者可以帮助我学习的任何其他资源?
对不起,如果我的问题没有多大意义,请让我澄清你是否需要.
谢谢!
更新:
这是我想要学习的更具体的一点.
假设我有实体"人"(属性可能包括姓名,年龄等)以及我的应用用户可以添加人的桌面视图.(我已经建立并知道如何做适当的)但是,现在我想添加实体"餐"(属性可能包括食品),而餐是我自己的桌面视图,我可以通过选择我的人来访问想要加一顿饭.每个人可以吃一顿以上,但每餐只能有一个人.
问题是:为了实现这一目标,我的核心数据模型fetchRequests等是什么样的?
希望足够清楚!:)
谢谢

这是我创建一顿饭的功能的代码片段:
func createMeal() {
let entityDescription = NSEntityDescription.entityForName("Meal", inManagedObjectContext: managedObjectContext!)
let meal = Meal(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
meal.mealName = mealNameTxt.text
meal.mealItem1 = mealItem1Txt.text
managedObjectContext?.save(nil)
}
Run Code Online (Sandbox Code Playgroud) 所以我有几个模型,我正在设置它们与 Laravel Eloquent ORM 一起使用......
这些模型引用的表格由第三方程序填充,我没有太多的能力进行编辑,因此我必须找到解决方法来解决以下烦恼。
用户表具有字符串 ID,例如: 1234
其他一些表(例如操作日志)有一个字符串外部用户 ID,例如: "1234"
正如您可能在这里看到的那样,其他表"在用户 ID 上添加了一个,因此,我无法直接通过 Laravel 关系运行它,因为"1234"~= 1234...
所以我试图找出是否有某种方法可以"1234"通过修剪函数或类似"的方法在它被用于雄辩的关系之前删除它。
是的,我知道添加 是愚蠢的",如上所述,它是第三方程序。我将尝试查看他们是否可以更改该功能,但如果他们不能更改,我需要找到一种方法来解决它。
任何帮助,将不胜感激 :)
关系代码示例:
public function useractions(){
return $this->hasMany('\App\UserActions','userid');
}
public function user(){
return $this->belongsTo('\App\User','userid');
}
Run Code Online (Sandbox Code Playgroud)
这是来自:https ://laracasts.com/discuss/channels/eloquent/eloquent-and-trimming-relation-fields
我们的项目有以下要求-
所以我创建了以下模式 - 但我无法使用 populate 并且我发现添加/更新/删除很多痛苦。此外,当我查询项目时,我想显示用户的电子邮件 ID,而不是 objectId,但不想使用电子邮件作为参考,因为用户可以更改他们的电子邮件。考虑到模式上最流行的操作,请帮助我进行更好的设计-
以下工作模式存在于单独的文件 user.js 和 project.js 中,需要导出模型。
var userSchema = mongoose.Schema({
用户名:{类型:字符串},
密码:字符串,
电子邮件:{type:String, required:true, unique: true, index: true},
createdAt: { type: Date, 默认: Date.now },
名字:字符串,
姓氏:字符串,
home_project: {type:Schema.Types.ObjectId, ref:Project},
所有者:[{type:Schema.Types.ObjectId, ref:Project}],
管理员:[{type:Schema.Types.ObjectId, ref:Project}],
查看器:[{type:Schema.Types.ObjectId, ref:Project}]
});
var projectSchema = mongoose.Schema({
项目名称:{type:String, required:true, unique: true, index: true},
createdAt: { type: Date, 默认: Date.now },
所有者:{type:String, ref:User},
管理员:[{type:String, ref:User}],
查看器:[{type:String, ref:User}] … database-design mongoose mongodb relationships mongoose-schema
我在解决 Laravel 关系时遇到了一些麻烦。在我的应用程序中,用户和想法之间存在一对多的关系。(用户可能有多种想法。)我正在使用 Ardent。
这是我的用户模型:
使用 Illuminate\Auth\UserTrait;
使用 Illuminate\Auth\UserInterface;
使用 Illuminate\Auth\Reminders\RemindableTrait;
使用 Illuminate\Auth\Reminders\RemindableInterface;
使用 LaravelBook\Ardent\Ardent;
class User 扩展 Ardent 实现 UserInterface、RemindableInterface {
使用 UserTrait、RemindableTrait;
/**
* 模型使用的数据库表。
*
* @var 字符串
*/
受保护的 $table = '用户';
/**
* 从模型的 JSON 形式中排除的属性。
*
* @var 数组
*/
protected $hidden = array('password', 'remember_token');
protected $fillable = array('first_name', 'last_name', 'email', 'password');
公共 $validation_errors;
公共 $autoPurgeRedundantAttributes = true;
公共 $autoHashPasswordAttributes = true;
公共 $autoHydrateEntityFromInput = true;
public static $passwordAttributes = array('password');
公共静态 $rules = … 我正在尝试使用 EF Code First 来做到这一点:

有区域两个表:用户和区域。一个用户属于一个所需的区域,一个区域可以有零个或一个用户(作为管理员)。然后:
用户 *..1 区域和用户 0..1 区域
用户类:
public class User {
public int UserId { get; set; }
public string Name { get; set; }
[ForeignKey("Area")]
public int AreaId { get; set; }
[InverseProperty("Users")]
public virtual Area Area { get; set; }
public virtual Area AreaTitular { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
区域类:
public class Area {
public int AreaId { get; set; }
public string Name { get; set; }
public List<User> Users { get; …Run Code Online (Sandbox Code Playgroud) entity-framework one-to-one one-to-many code-first relationships
我知道之前在 Stack Overflow 上已经问过这个问题,但答案并没有以我可以解释的方式为我做。我的一般方法受到本教程的启发。
我想要做的是创建一个非常简单的模型来为用户添加好友,通过一条记录在两端创建等效的好友关系。
在数据库级别,我只有一个“friendships”表,其中只有一个 user_id、一个friend_id 和一个 is_pending 布尔列。
在 user.rb 中,我将关系定义为:
has_many :friendships
has_many :friends, through: :friendships
Run Code Online (Sandbox Code Playgroud)
在friendship.rb 中,我将这种关系定义为:
belongs_to :user
belongs_to :friend, :class_name => 'User'
Run Code Online (Sandbox Code Playgroud)
如果我添加好友,我可以访问如下:
> a = User.first
> b = User.last
> Friendship.new(a.id, b.id)
> a.friends
=> #<User b>
Run Code Online (Sandbox Code Playgroud)
这是完美的,但我想要的是也能够像这样朝另一个方向前进:
> b.friends
Run Code Online (Sandbox Code Playgroud)
不幸的是,按照原样定义的关系,我得到了一个空集合。运行的 SQL 显示它正在搜索 user_id = b.id。我如何指定它还应该搜索friend_id = b.id?
relationships ×10
eloquent ×3
php ×3
laravel ×2
activerecord ×1
bulkinsert ×1
c# ×1
code-first ×1
core-data ×1
database ×1
ios ×1
laravel-4 ×1
laravel-5 ×1
mongodb ×1
mongoose ×1
nested ×1
one-to-many ×1
one-to-one ×1
oop ×1
ruby ×1
sql-server ×1
swift ×1
trim ×1
uitableview ×1