繁体   English   中英

如何在linq中插入sql

[英]How to insert in linq to sql

插入时我有两个表的问题。 表格创建如下:

我有一个表“页面”与另一个表“内容”有关系,所以FK“页面”属于“内容”

当我插入一个新内容时,表格“Page”上已有一个索引我想在“内容”中实现为什么表扫描选择“页面”正确的行。 问题是是时候采取InsertOnSubmit的内容了。 它自动也在“页面”上创建一个新索引。

有人有想法么?

由于Page实体与Content实体具有一对多的关系,因此每个页面都有很多内容,每个内容只属于一页,因此页面实体必须有一个内容列表,而内容实体必须具有属性类型Page表示页面引用而不是外键PageId ,因此您无需检索页面的ID以添加新内容,如下所示:

[Table]
public class Page
{
    ...
    private EntitySet<Content> _contents;
    [Association(Storage = "_contents", ThisKey = "Id", OtherKey = "PageId")]
    public EntitySet<Content> Contents
    {
        get { return _contents; }
        set { _contents.Assign(value); }
    }
    ...
}

对于内容实体:

[Table]
public class Content
{
    ...
    [Column]
    int PageId{ get; set; }
    EntityRef<Page> _page;
    [Association(Storage = "_page", ThisKey = "PageId", 
      OtherKey = "Id", IsForeignKey = true)]
    public Page Page
    {
        get { return _page.Entity; }
        set { _page.Entity = value; }
    }
 }

每当您需要惰性化新内容时,您必须传递如下页面引用:

 Page pageReference = //Get By its id or whatever
 //or
 Page pageReference = new Page { Id = 1, name = " ",....}; 
 Repository.Add( new Content{ Id = 1,...,Page = pageReference });

请注意:add方法只是对实体执行InserOnSubmit

因此,无论何时您想要插入新内容,您都可以附加任何页面或仅从页面实体添加任何新页面,而不是来自内容,并且您不需要检索页面的ID以告诉您什么是这个内容只是将关系定义为对象关系而不是外键的页面。

是的,你需要更好地解释这个升技,但如果我理解你正确你创建了一个页面内容。 这里的关键是创建页面检索其ID然后将内容添加到该页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM