标签: relationships

EF Code First:多对多和一对多

这可能只是因为我对EF Code First流畅API的了解不足,但我很难过.

我想模拟以下内容:

  • 集合与标识和名称
  • 一个用户收集与标识和名称
  • 每个用户只分配一个主要组
  • 每个用户可能有零个或多个次要组

我想要的表格结构如下:

  • ID
  • 名称

用户

  • ID
  • 名称
  • PrimaryGroupId

SecondaryGroupAssignments

  • 用户身份
  • GroupId的

我一直在试图用EF Code First模拟这个问题,但我无法接受用户和组之间的关系.很抱歉没有发布任何.NET代码(我很高兴),但无论如何它可能都是错的.

有没有办法制作EF模型呢?我假设我必须使用Fluent API进行某种配置.也许更好的问题是:Fluent API是否有任何好的,明确的参考?

谢谢!

database fluent-interface relationships ef-code-first entity-framework-4.1

6
推荐指数
1
解决办法
3669
查看次数

在SQL Server中创建一对一可选约束

我有一个"主桌",称之为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数据库图中拖动

  • IllegalTOCustomers

指示SQL Server Customers_IllegallyObtainedInformation是关系中的"子".相反,SQL Server中发生的事情使它成为一对一的关系:

在此输入图像描述

这意味着如果您尝试插入a …

sql-server table-relationships sql-server-2008-r2 relationships

6
推荐指数
3
解决办法
4844
查看次数

限制Laravel的关系

我有一个模型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)

因为这不起作用.

我完全相信我不是唯一一个遇到这个问题的人,我确实设法找到了一些"尝试解决方案"但不是一个稳定的工作代码示例.有人可以帮忙吗?

php relationships laravel eloquent laravel-4

6
推荐指数
1
解决办法
1990
查看次数

实体框架,批量插入和维护关系

我有一个似乎常见的问题,但我无法弄清楚如何达到预期的结果.我有一个嵌套的实体,其上定义了导航属性,如下图所示.

在此输入图像描述

对于给定的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)

c# entity-framework nested bulkinsert relationships

6
推荐指数
2
解决办法
6661
查看次数

核心数据关系(迅捷)

我正在构建一个需要核心数据关系的应用程序:

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)

core-data uitableview relationships ios swift

6
推荐指数
1
解决办法
4838
查看次数

用于关系的 Laravel Eloquent 和 Trimming 字段

所以我有几个模型,我正在设置它们与 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

php trim relationships eloquent laravel-5

6
推荐指数
1
解决办法
7422
查看次数

MongoDB/Mongoose 多对多关系 - 用户、项目和角色

我们的项目有以下要求-

  1. 用户可以是多个项目的一部分
  2. 一个项目可以有多个用户。
  3. 用户可以是项目的所有者或管理员或查看者。
  4. 显然,一个项目只能有一个所有者。
  5. 一个项目可以有多个管理员或查看者。
  6. 每个用户都有一个家庭/默认项目。

所以我创建了以下模式 - 但我无法使用 populate 并且我发现添加/更新/删除很多痛苦。此外,当我查询项目时,我想显示用户的电子邮件 ID,而不是 objectId,但不想使用电子邮件作为参考,因为用户可以更改他们的电子邮件。考虑到模式上最流行的操作,请帮助我进行更好的设计-

  1. 用户可以创建项目
  2. 将人员添加到项目
  3. 查看他的所有项目和成员
  4. 更改项目中某人的角色
  5. 从项目中删除某人
  6. 根据他们的权利查看项目和所有者和成员(电子邮件不是对象 ID)

以下工作模式存在于单独的文件 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

6
推荐指数
0
解决办法
929
查看次数

Laravel/Ardent - 在 save() 上,错误:关系方法必须返回 Illuminate 类型的对象

我在解决 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 = …

php relationships laravel eloquent

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

实体框架(代码优先)一对多和一对一关系(有两个实体)。如何?

我正在尝试使用 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

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

如何在 Rails 中建立相互友谊的模型

我知道之前在 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?

ruby oop activerecord ruby-on-rails relationships

5
推荐指数
2
解决办法
3404
查看次数