我想在我的数据库中创建一个新行,该表具有几个外键关系,我无法处理需要进行的订单和调用.这是我到目前为止:
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合并选项加载的对象始终是分离的.
有任何想法吗?
SQL Server 2005.
我正在将外键约束添加到据称不需要它们的应用程序的数据库中.当然,数据变得不可靠,并且在外键领域中存在孤立的条目.
设置:
两个表,TableUser和TableOrder.TableUser具有主键'UserID',TableOrder具有外键'UserID'.
如何在TableUser.UserID中找到TableOrder.UserID没有匹配条目的行?
例如,TableOrder.UserID的值为250,但250没有匹配的TableUser.UserID键.
这是我的一个例子(采用Stack Overflow).我有2张桌子,Questions和Answers.我也有一张Comments桌子.评论表将引用问题和答案.
我该如何设置数据库?在Comments,QuestionId和AnswerId中有2列.有一个问题和答案的表?介于两者之间,以某种方式告诉我问题或答案?
编辑:找到SO数据资源管理器,它使用一个表来解决问题和答案...我只是不喜欢POSTS有这么多NULLS 的表.这会产生任何负面影响吗?
这是非常基本的问题,我确信,但现在让我感到困惑: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)
任何人都可以帮我吗?
谢谢
大卫
我有两个表,如下所示:
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上。
可能重复:
外键约束可能导致循环或多个级联路径?
我有一个联系人详细信息数据库,其中包含四个主要表:
这是一个图表(箭头表示外键约束):
重要提示:我不小心将绿色箭头标记为指向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,但显然这是不正确的.
- 人员记录已删除
org_incharge_PerID在相应的组织记录中设置为null- 没有进一步的传播.如果组织已被删除,则会出现问题,因为部门也会引用组织.事实上,不应该有问题.
是否有另一种方法可以确保引用完整性,还是应该重新考虑我的表结构,以一种可以完全避免周期问题的方式?
我想要的是org_incharge_PerID被限制per_PerID在人员表中的s 集合.此外,NULL如果删除该人,我希望将值设置为.
sql-server database-design referential-integrity foreign-key-relationship sql-server-2008
假设有一个抽象模型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
你好
您能帮我如何禁止创建嵌套对象吗?
我有这样的序列化器:(
员工具有对团队的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
我是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
我们有一个数据库模式,以简化(略作作)的形式看起来像:
在列(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
mysql ×3
database ×2
django ×2
foreign-keys ×2
angularjs ×1
asp.net-mvc ×1
c# ×1
django-orm ×1
doctrine ×1
eloquent ×1
laravel-5.1 ×1
many-to-one ×1
php ×1
sql-server ×1
t-sql ×1