标签: foreign-key-relationship

检索SQL Server中的表的DataTable信息

我需要获取列名,主键,外键和其他架构信息.这DataTable堂课似乎包含了所有这些.

下面是我到目前为止的当前代码.有了它,我可以检索除外之外的所有信息.我期待它们被定义,DataTable.Constraints但它们不是.这是我目前的代码:

    private static DataTable LoadSchemaInfo(string tableName, SqlConnection connection)
    {
        string cmdText = "SELECT * FROM [" + tableName + "] WHERE 1 = 0";

        // Create a SqlDataAdapter to get the results as DataTable
        var sqlDataAdapter = new SqlDataAdapter(cmdText, connection);

        // Create a new DataTable
        var dataTable = new DataTable(tableName);

        // Fill the DataTable with the result of the SQL statement
        sqlDataAdapter.FillSchema(dataTable, SchemaType.Source);

        return dataTable;
    }
Run Code Online (Sandbox Code Playgroud)

知道如何检索所有信息或如何获取FK(最好不使用纯SQL语法,因为我会缺少一些编译时检查)?

c# sql-server datatable schema foreign-key-relationship

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

通过WCF数据服务插入新的父/子

例如,我有一个与地址相关的联系人表.要与数据库通信,我使用WCF数据服务.我有一个表单,其中有联系信息,上面有可能的地址列表.现在我创建'要插入的地址'列表并使用(上下文是实体数据上下文)插入联系人:

context.AddToContact(contact);
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

之后,我可以获取插入的contact.ID并将其作为父ID添加到地址列表中的所有地址:

cacheAddressList.ForEach(a =>
                        {
                            address.ContactID = contact.ID;
                            context.AddToAddress(address);
                        }
                        );
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

所以我必须做2次插入.
我知道在实体框架中我可以将子项添加到父项,如果我有它们之间的导航属性.在我的情况下,我有导航,但这样的代码不起作用(联系还没有保存..):

 context.AddToContact(contact);
 cacheAddressList.ForEach(a =>
                            {
                                address.Contact = contact;
                            }
                            );
 context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

是否可以在一次交易中插入所有孩子和父母?因为如果可能的话 - 我不必在父插入后创建所有要添加的子列表.

c# foreign-key-relationship entity-framework-4 wcf-data-services

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

mysql中有大量的外键?这样好吗?

嘿家伙(可能是女孩).我正在为一家我工作的公司在mysql中建立一个庞大的数据库,而且我正在坚持你可能帮助我的事情.

我的问题很简单:我怎么知道有很多外键?

我有8个表描述以下数据:

第一关系

  • 表国家(pais)
  • 表状态(estado)
  • 桌城(cidade)

(city => state => country)

第二关系

  • 表部门(departamento)
  • 表扇区(setor)
  • 表角色(货物)

(角色=>部门=>部门)

第三关系

  • 法人(entidade juridica)
  • 公司(empresa)

(公司=>法人实体)

最后,我有一个名为employee第九个表,该表具有前面描述的所有表的外键引用.


  • (主要)id-colab
  • fone_colaborador
  • fax_colaborador
  • ativo_colaborador
  • email_colaborador
  • (主要)cargo_id_cargo(货物表)
  • (主要)cargo_setor_id_setor(货物表)
  • (主要)cargo_segor_departamento_id_departamento(货物表)
  • (主要)empresa_id_empresa(empresa表)
  • (小学)empresa_entidade_juridica_id_entidade_juridica(empresa table)
  • (主要)empresa_entidade_juridica_cidade_cidade_id(empresa表)

  • (fK)货物表

  • (fk)e​​mpresa表

这个模型的主要概念是.

  • 我有一个法人实体的注册.
  • 法人实体必须放在country => state => city

  • 我有一家公司的注册

  • 公司应告知其是否为分公司或母公司
  • 公司应该对法人实体表(拥有地址,电话,州ID,城市ID,国家ID,邮政编码等)进行引用.

  • 我有一个角色的注册

  • 角色应该引用扇区表
  • 扇区表应该具有对department表的引用

最后,在上图中描述了名为employee的主表.

我希望你们有事我!

拜拜.

php mysql database-design foreign-key-relationship

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

Rails依赖:: destroy导致ArgumentError

我的rails应用程序中有一个User模型,如下所示

class User < ActiveRecord::Base
  has_many :parts, dependent: :destroy
  has_many :assemblies, dependent: :destroy
  has_many :packages, dependent: :destroy
  has_many :manufacturers, dependent: :destroy
  //more code here
end
Run Code Online (Sandbox Code Playgroud)

我也有dependent: :restrict其他一些模特.

当我运行以下内容时rails console,我得到一个ArgumentError:

u = User.first
u.parts
Run Code Online (Sandbox Code Playgroud)

调用u.parts给出以下错误消息:

ArgumentError: Unknown key: dependent
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/hash/keys.rb:44:in `block in assert_valid_keys'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/hash/keys.rb:43:in `each_key'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/hash/keys.rb:43:in `assert_valid_keys'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/association.rb:33:in `validate_options'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/association.rb:24:in `build'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/collection_association.rb:23:in `build'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/autosave_association.rb:139:in `build'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/has_and_belongs_to_many.rb:8:in `build'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/collection_association.rb:13:in `build'
    from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations.rb:1600:in `has_and_belongs_to_many'
    from /home/david/code/PartSorter/app/models/part.rb:5:in `<class:Part>'
    from …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails associations foreign-key-relationship ruby-on-rails-3

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

错误:.net中的db.SaveChanges()发生参照完整性约束违规?

我创建了一个WPF应用程序,Entity framework 4.0.当我试图在PhoneNumber表中插入记录时,它成功地插入了第一条记录.但是,当我遍历一些List并尝试将另一个项插入PhoneNumber表时,它插入记录但显示错误为:

InvalidOperationException由用户代码处理:对数据库的更改已成功提交,但更新对象上下文时发生错误.ObjectContext可能处于不一致状态.内部异常消息:发生了引用完整性约束违规:定义引用约束的属性值在关系中的主体和从属对象之间不一致.

.cs文件中的代码:

protected void InsertContact(List<PhoneNumbersList> phoneList,otherparameters here)
{
             Contact contact = new Contact();
             PhoneNumber phnumber = new PhoneNumber();

            //INSERT into Contacts Table
            contact.PrefixTitleID = cfnm.PrefixTitleID;// cfnm.Title;
            contact.FirstName = cfnm.FirstName;
            contact.MiddleName = cfnm.MiddleName;
            contact.LastName = cfnm.LastName;
            contact.Website = webpageaddress;
            contact.SuffixID = cfnm.SuffixID;
            contact.Gender = gender;
            contact.IMAddress = imaddress;

            db.Contacts.Add(contact);
            db.SaveChanges();
            int contactid=contact.ContactID;
            if (contactid > 0)
            {
                int phid = 0;
                //INSERT into PhoneNumber Table
                foreach (var ph in phoneList)
                {

                    phnumber.PhoneTypeID …
Run Code Online (Sandbox Code Playgroud)

.net entity-framework invalidoperationexception foreign-key-relationship

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

使用flask sql-alchemy上的外键引用值

我最近刚使用flask和sql-alchemy进入web开发.一切都工作正常,直到我不得不使用外键访问值.我有这样的模特:

class User(db.Model):
    _tablename='user'
    id=db.Column(db.Integer, primary_key=True)
    name=db.Column(db.String)
    email=db.Column(db.String)

class Post(db.Model):
    _tablename='post'
    id=db.Column(db.Integer, primary_key=True)
    title=db.Column(db.String)
    user=db.Column(db.Integer, db.ForeignKey('user.id'))
Run Code Online (Sandbox Code Playgroud)

我想在网页上显示所有帖子的列表,在html文件中有这样的内容:

{% for entry in entries %}
    <tr>
       <td> {{ entry.id }} </td>
       <td> {{ entry.title }} </td>
       <td> {{ entry.user_name }} </td>
       <td> {{ entry.user_email }} </td>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何使用user.id外键从用户表访问用户和电子邮件.我试过了

posts = Post.query.all()
for post in posts:
    post.user_name = User.query.filter_by(id=post.id).first()
return render_template('post.html', entries=posts)
Run Code Online (Sandbox Code Playgroud)

但是,然后不仅仅返回名称和电子邮件,如帖子中的标题,它返回的内容类似于(u'User A',)和(u'test@test.com',).我想不出任何其他方式.任何人都可以帮助我吗?

python sqlite foreign-key-relationship flask flask-sqlalchemy

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

Laravel 4和Eloquent:检索所有记录和所有相关记录

我有两个班:ArtistInstrument.每个人都Artist可以玩一个或多个Instrument.并且每个Instrument都可以分配给一个或多个Artists.所以,我已经设置了以下类:

Artist.php

public function instruments() {
    return $this->belongsToMany('App\Models\Instrument');
}
Run Code Online (Sandbox Code Playgroud)

Instrument.php

public function artists() {
    return $this->belongsToMany('\App\Models\Artist');
}
Run Code Online (Sandbox Code Playgroud)


然后我有三个数据库表:

artists: id, firstname, lastname, (timestamps)
instruments: id, name
artist_instrument: id, artist_id, instrument_id
Run Code Online (Sandbox Code Playgroud)


我能够成功找回一位艺术家及其相关乐器,如下所示:

ArtistController.php

$artist = Artist::find($artist_id);
$instruments = $artist->instruments()->get();
return \View::make('artists')->with('artists', $artists)->with('instruments', $instruments);
Run Code Online (Sandbox Code Playgroud)

我有3个问题:

  1. 在我看来,我可以输出$artist像:

    {{ $artist->firstname }}
    
    Run Code Online (Sandbox Code Playgroud)

    我可以迭代$instruments:

    @foreach ($instruments as $instrument)
        <h2>{{ $instrument->name }}</h2>
    @endforeach
    
    Run Code Online (Sandbox Code Playgroud)

    但是有可能迭代$artist(我知道只有一个 - 见#2)并且每次$artist …

orm foreign-key-relationship laravel eloquent

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

在django-tables2中有很多人

通过ForeignKey我有django的模型有很多对:

    class A(m.Model):
        id = m.AutoField(primary_key=True)
        name = m.CharField(max_length=250, unique=True, null=False)

        def __str__(self):
            return self.name


    class B(m.Model):
        id = m.AutoField(primary_key=True)
        name = m.CharField(max_length=250, unique=True, null=False)
        a = m.ForeignKey(A)

        def __str__(self):
            return self.name


    class C(m.Model):
        id = m.IntegerField(null=False, unique=True, primary_key=True)
        name = m.CharField(max_length=250, unique=True, null=False)
        bs = m.ManyToManyField(B, through='D')

        def __str__(self):
            return '%d, %s, (%s), (%s)' % (
                self.id,
                self.name, 
                ', '.join(b.name for b in self.bs.all()), 
                ', '.join(b.a.name for b in self.bs.all()))
                )


    class D(m.Model):
        c = m.ForeignKey(C)
        b = m.ForeignKey(B) …
Run Code Online (Sandbox Code Playgroud)

python django many-to-many foreign-key-relationship django-tables2

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

保存一对一的关系.两个表中的外键

我有两张表如下:

CREATE TABLE pets(
      id int NOT NULL AUTO_INCREMENT,
          user_id int,
          any_data varchar(255),
      foreign key (user_id) references users(id),
      primary key(`id`)
);

CREATE TABLE users(
      id int NOT NULL AUTO_INCREMENT,
          pet_id int,
          any_data varchar(255),
      foreign key (pet_id) references pets(id),
      primary key(`id`)
);
Run Code Online (Sandbox Code Playgroud)

我的模型有下一个:

用户:

public function relatedPet() {
    return $this->hasOne("Pet", "pet_id");
}
Run Code Online (Sandbox Code Playgroud)

宠物:

public function relatedUser() {
    return $this->belongsTo("User", "user_id ");
}
Run Code Online (Sandbox Code Playgroud)

我想保存用户并与现有宠物有关,但我不知道该怎么做:

$user= new User(array("any_data"=>"Hi, this is a test"));
$pet = Pet::find(1);
Run Code Online (Sandbox Code Playgroud)

如何创建两个objets之间的关系?

one-to-one foreign-key-relationship laravel eloquent

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

在Django Rest Framework中,如何限制序列化的外键对象的数量

我正在序列化产品模型及其评论.这是我的简单代码:

class ProductSerializer(serializers.HyperlinkedModelSerializer):
    comment_set = CommentSerializer(many=True, read_only=True)
    class Meta:
        model = Product
        fields = [
            'title',
            'comment_set'
        ]


class CommentSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Comment
        fields = [
            'text',
        ]


class Comment(models.Model):
    product = models.ForeignKey(Product, null=True, blank=True, db_index=True)


class Product(models.Model):
    title = models.CharField(max_length=50)
    ...
Run Code Online (Sandbox Code Playgroud)

问题:如果产品有很多评论.例如,500条评论.所有500个都被序列化了.

如何将结果限制为我自己选择的一些,如100条评论?

我在发布之前做了一些研究,但只发现了有关过滤的问题.

谢谢.

django serialization foreign-keys foreign-key-relationship django-rest-framework

2
推荐指数
3
解决办法
1686
查看次数