标签: foreign-key-relationship

如何与Entity Framework创建外键关系?

我想在我的数据库中创建一个新行,该表具有几个外键关系,我无法处理需要进行的订单和调用.这是我到目前为止:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() );
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

代码在第二行失败,说:

当与此相关端关联的源对象处于添加,删除或分离状态时,Attach不是有效操作.使用NoTracking合并选项加载的对象始终是分离的.

有任何想法吗?

asp.net-mvc entity-framework foreign-key-relationship

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

如何查询与其约束不匹配的外键?

SQL Server 2005.

我正在将外键约束添加到据称不需要它们的应用程序的数据库中.当然,数据变得不可靠,并且在外键领域中存在孤立的条目.

设置:
两个表,TableUser和TableOrder.TableUser具有主键'UserID',TableOrder具有外键'UserID'.

如何在TableUser.UserID中找到TableOrder.UserID没有匹配条目的行?

例如,TableOrder.UserID的值为250,但250没有匹配的TableUser.UserID键.

t-sql sql-server-2005 foreign-keys foreign-key-relationship

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

数据库设计 - 一个表中的列引用两个表

这是我的一个例子(采用Stack Overflow).我有2张桌子,QuestionsAnswers.我也有一张Comments桌子.评论表将引用问题和答案.

我该如何设置数据库?在Comments,QuestionId和AnswerId中有2列.有一个问题和答案的表?介于两者之间,以某种方式告诉我问题或答案?

编辑:找到SO数据资源管理器,它使用一个表来解决问题和答案...我只是不喜欢POSTS有这么多NULLS 的表.这会产生任何负面影响吗?

database database-design foreign-key-relationship

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

实体框架4,使用外键值插入而不是ID

这是非常基本的问题,我确信,但现在让我感到困惑:S

我有2个表,学生和课程有外键约束,许多学生到1个课程.

我在Students表中存储了一个CourseId_FK参考,所以当我创建一个学生时,我怎么能做这样的事情?

Students student = new Students();
student.Name = Bob;
student.Course.CourseName = "Geography";
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

现在,以上不起作用,我必须解决

student.CourseId = 22;
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我吗?

谢谢

大卫

c# entity-framework foreign-key-relationship

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

MySQL:未执行外键约束

我有两个表,如下所示:

CREATE TABLE customer
(
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(25),
  PRIMARY KEY(id)
);

CREATE TABLE `client`
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(200),
  `customer_id` INT NOT NULL,

   PRIMARY KEY(`id`),
   INDEX(`customer_id`),
   FOREIGN KEY (`customer_id`) REFERENCES `customer`(`id`) ON UPDATE CASCADE ON DELETE RESTRICT
);
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令:

INSERT INTO customer (name) VALUES ('Customer1');
Run Code Online (Sandbox Code Playgroud)

现在表customer包含名称:Customer1,id:1

然后我运行了这个:

INSERT INTO client (name, customer_id) VALUES ('Client of Customer1',34);
Run Code Online (Sandbox Code Playgroud)

它本来应该失败,但是成功插入了。这是为什么?

这是在Linux Mint上的MySQL 5.1上。

mysql foreign-keys foreign-key-relationship

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

替代FK SET NULL设计导致循环

可能重复:
外键约束可能导致循环或多个级联路径?

我有一个联系人详细信息数据库,其中包含四个主要表:

  • 组织
    • 部门

这是一个图表(箭头表示外键约束):

重要提示:我不小心将绿色箭头标记为指向per_PerID.它应该指向per_SecID

在此输入图像描述

我创建了约束,确保每个部门记录属于一个组织,每个部分属于一个部门,等等.这些外键约束的操作设置为CASCADE,因此删除组织将删除所有相应的部门等.

问题是每个组织都需要有一个负责人.这将转换为字段上的外键约束,该约束将包含负责人的ID.创建约束很简单,但是当我尝试将操作设置ON DELETE为时SET NULL,我收到以下错误:

在表格上引入FOREIGN KEY约束...可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.

我的理由是,只有当我设置动作时才会发生循环,但CASCADE不是SET NULL,但显然这是不正确的.

  1. 人员记录已删除
  2. org_incharge_PerID 在相应的组织记录中设置为null
  3. 没有进一步的传播.如果组织已被删除,则会出现问题,因为部门也会引用组织.事实上,不应该有问题.

是否有另一种方法可以确保引用完整性,还是应该重新考虑我的表结构,以一种可以完全避免周期问题的方式?

我想要的是org_incharge_PerID被限制per_PerID在人员表中的s 集合.此外,NULL如果删除该人,我希望将值设置为.

sql-server database-design referential-integrity foreign-key-relationship sql-server-2008

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

Django模型与多个模型的关系

假设有一个抽象模型CarOwner:而Person或Business可以是CarOwner.此外,具有特定VIN的汽车可以属于(涉及)个人或企业,但不属于两者(互斥的情况).在下面的代码的最后,我提出了两种可能性(参见代码中的注释"#1.我应该拥有这个???"和"#2.......或者我应该拥有这个???").在第一种可能性中,与抽象模型建立了多对一关系,我不确定这是否是正确的方法.在第二种情况下,建立了两种关系,我不确定这是否正确,特别是不清楚如何使它们相互排斥.那么哪一个是正确的,如果不是,请尽可能提供正确答案.谢谢.

class CarOwner(models.Model):
    location = models.CharField(max_length=50, blank=True)

    class Meta:
        abstract = True

class Person(CarOwner):
    name = models.CharField(max_length=50, blank=True)

class Business(CarOwner):
    business_id = models.CharField(max_length=50, blank=True)

class Car(models.Model):
    vin = models.CharField(max_length=50, blank=True)

    # 1. SHOULD I HAVE THIS??? (CarOwner is abstract)
    carowner = models.ForeignKey(CarOwner, blank=True, null=True)

    # 2. ...OR SHOULD I HAVE THIS???
    person = models.ForeignKey(Person, blank=True, null=True)
    business = models.ForeignKey(Business, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

django django-models foreign-key-relationship django-orm many-to-one

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

禁用在Django Rest框架中创建嵌套对象

你好

您能帮我如何禁止创建嵌套对象吗?

我有这样的序列化器:(
员工具有对团队的ForeignKey)

class TeamSerializer(serializers.ModelSerializer):
    class Meta:
        model = Team
        fields = ('id', 'name')
class EmployeeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Employee
        fields = ('id', 'name', 'surname', 'team')
        depth = 1
Run Code Online (Sandbox Code Playgroud)

或者可以是:

class EmployeeSerializer(serializers.ModelSerializer):
    team = TeamSerializer()
    class Meta:
        model = Employee
        fields = ('id', 'name', 'surname', 'team')
Run Code Online (Sandbox Code Playgroud)

当我发布json(创建员工)时

{
    name: "name",
    surname: "surname",
    team: {
           id: 1,
           name: "Web Team"
          }
}
Run Code Online (Sandbox Code Playgroud)

员工创建对象对象,但对象团队也......有什么方法可以禁止与员工一起创建团队对象?我只想创建员工并将选定的团队(当前在数据库中)设置为员工

在GET(列表)上,我希望能够检索以下数据:

{
 name: "name",
 surname: "surname",
 team: {
    id: 1,
    name: "Web Team"
 } …
Run Code Online (Sandbox Code Playgroud)

django foreign-key-relationship angularjs django-rest-framework

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

Laravel 5.1雄辩的关系模型 - 如何更新外键列?

我是laravel的初学者.从来没有使用过框架.我创建了一个名为'tabletest'的数据库.它有两张桌子.一个是用户表,另一个是电话表.用户表有两列(id和name).电话表有3列(id phone和user_id).我正在尝试的是,我将使用表单输入并将输入发送到数据库表.尽管名称和电话已正确保存在不同的表中,但user_id(外键列)未更新.它总是0.我现在该怎么办?

迁移文件是:

用户表:

public function up()
    {
        Schema::create('user', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
    }
Run Code Online (Sandbox Code Playgroud)

电话表:

public function up()
    {
        Schema::create('phone', function (Blueprint $table) {
            $table->increments('id');
            $table->string('phone');
            $table->unsignedInteger('user_id');
            $table->timestamps();
        });
    }
Run Code Online (Sandbox Code Playgroud)

用户模型:

use App\Model\Phone;
class User extends Model
{
  protected $table = "user";
  protected $fillable = ['name'];

  public function phone(){
    return $this->hasOne(Phone::class);
  }
}
Run Code Online (Sandbox Code Playgroud)

手机型号:

use App\Model\User;
class Phone extends Model
{
    protected $table = "phone";
    protected $fillable = ['phone','user_id'];

    public function user(){
        return $this->belongsTo(User::class);
    }
} …
Run Code Online (Sandbox Code Playgroud)

mysql database foreign-key-relationship eloquent laravel-5.1

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

如何在学义映射中描述多列外键

我们有一个数据库模式,以简化(略作作)的形式看起来像:

在此处输入图片说明

在列(domainId,groupId)上设置从用户到域的外键的位置,以确保引用完整性。此结构可以很好地用于预期目的。


但是,对于与同一个数据库通信的新应用程序,我现在需要为Doctrine创建一个映射,以映射上述结构,包括列上的外键关系。

我尝试了以下方法:

<entity name="User" table="users">
   <!-- other fields -->
   <many-to-one field="domain" target-entity="Domain" fetch="LAZY">
      <join-columns>
         <join-column name="domainId" referenced-column-name="domainId"/>
         <join-column name="groupId" referenced-column-name="groupId"/>
      </join-columns>
   </many-to-one>
</entity>
Run Code Online (Sandbox Code Playgroud)

但这给我一个错误: UnitOfWork.php line 2649: Undefined index: groupId

所以,我的问题是:

在主义中描述多列多对一外键关系的正确方法是什么?



为了完整起见,数据库为上述ERD中所述的架构创建代码:

CREATE TABLE `users` (
  `userId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `groupId` INT(10) UNSIGNED NOT NULL,
  `domainId` INT(10) UNSIGNED NOT NULL,
  `someData` VARCHAR(32),
  PRIMARY KEY (`userId`),
  KEY `key_users_groupId_domainId` (`groupId`, `domainId`)
) ENGINE=InnoDB;

CREATE TABLE `domains` (
  `domainId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `groupId` …
Run Code Online (Sandbox Code Playgroud)

php mysql doctrine foreign-key-relationship doctrine-mapping

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