标签: entity

如何在Entity框架中获取插入实体的Id?

我在Asp.net中遇到了Entity Framework的问题.每当我将对象添加到数据库时,我想获取Id值.我怎样才能做到这一点?

c# entity entity-framework

575
推荐指数
7
解决办法
37万
查看次数

如何使用Entity Framework仅更新一个字段?

这是桌子

用户

UserId
UserName
Password
EmailAddress
Run Code Online (Sandbox Code Playgroud)

和代码..

public void ChangePassword(int userId, string password){
//code to update the password..
}
Run Code Online (Sandbox Code Playgroud)

sql entity field entity-framework-4 dbcontext

180
推荐指数
10
解决办法
18万
查看次数

JPA和Hibernate中persist()和merge()有什么区别?

Hibernate中persist()和merge()有什么区别?

persist() 可以创建UPDATE和INSERT查询,例如:

SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
A a=new A();
session.persist(a);
a.setName("Mario");
session.flush();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,查询将生成如下:

Hibernate: insert into A (NAME, ID) values (?, ?)
Hibernate: update A set NAME=? where ID=?
Run Code Online (Sandbox Code Playgroud)

所以persist()方法可以生成插入和更新.

现在merge():

SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
Singer singer = new Singer();
singer.setName("Luciano Pavarotti");
session.merge(singer);
session.flush();
Run Code Online (Sandbox Code Playgroud)

这是我在数据库中看到的:

SINGER_ID   SINGER_NAME
1           Ricky Martin
2           Madonna
3           Elvis Presley
4           Luciano Pavarotti
Run Code Online (Sandbox Code Playgroud)

现在使用更新记录 merge()

SessionFactory sef = …
Run Code Online (Sandbox Code Playgroud)

java orm entity hibernate jpa

115
推荐指数
3
解决办法
16万
查看次数

在Entity框架中提高批量插入性能

我想按实体框架在表中插入20000条记录,大约需要2分钟.除了使用SP来改善其性能之外,还有什么方法.这是我的代码:

 foreach (Employees item in sequence)
 {
   t = new Employees ();
   t.Text = item.Text;
   dataContext.Employees.AddObject(t);                  
 }
 dataContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

entity entity-framework

110
推荐指数
5
解决办法
9万
查看次数

如何使用实体框架通过id删除对象

在我看来,我必须在使用下面的实体框架删除它之前检索一个对象

var customer = context.Customers.First(c => c.Id == 1);

context.DeleteObject(customer);

context.Savechanges();
Run Code Online (Sandbox Code Playgroud)

所以我需要两次打数据库.有更简单的方法吗?

entity entity-framework

90
推荐指数
8
解决办法
8万
查看次数

cascade = {"remove"} VS orphanRemoval = true VS ondelete ="CASCADE

我尝试收集有关以下方式的一些信息,以便在删除父实体时自动删除子实体.似乎最常见的方法是使用这三个注释:cascade = {"remove"} OR orphanRemoval = true OR ondelete ="CASCADE".

对第三个问题感到有点困惑:ondelete ="CASCADE",正如关于这个的官方文档中的解释非常稀缺)如果有人能够证实我从我的研究中收集和了解的以下信息,我会很高兴.网和经验......

它能做什么

cascade = {"remove"}
==>当拥有方实体为时,删除反面的实体.即使你与其他拥有的实体有许多不同之处.
- 应该用于集合(所以在OneToMany或ManyToMany关系中)
- 在ORM中实现

orphanRemoval = true
==>当拥有方实体为AND时,将删除反方的实体,并且它不再连接到任何其他拥有方实体.(参考 doctrine official_doc - ORM中的实现
- 可以与OneToOne,OnetoMany或ManyToMany一起使用

onDelete ="CASCADE"
==>这会将删除级联添加到数据库中的外键列
- 这个策略有点难以实现,但可以非常强大和快速.(参见 doctrine official_doc ......但还没有阅读更多解释)
- ORM必须做的工作少(与之前的两种做法相比),因此应该有更好的表现.

其他信息
- 所有这三种方式都在双向关系实体实现(右???)
- 使用cascade = {"remove"}完全绕过任何外键onDelete = CASCADE.(参见doctrine_official_doc)

关于如何在代码中使用它的示例

  • orphanRemoval和cascade = {"remove"}在反转的实体类中定义.
  • ondelete ="CASCADE"在所有者实体中定义
  • 你也可以写@ORM\JoinColumn(onDelete ="CASCADE")并让doctrine处理列名

级联= { "去除"}

/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", …
Run Code Online (Sandbox Code Playgroud)

entity doctrine cascade symfony

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

EF 4.1异常"提供程序未返回ProviderManifestToken字符串"

我试图复制在MSDN上找到的示例.我正在使用ASP.NET和EF 4.1(CTP?).我已经使用NuGet来安装EntityFramework包.

我收到此错误:The provider did not return a ProviderManifestToken string...并且永远不会创建数据库.

这是我的连接字符串:

<add name="HospitalContext"
   connectionString=
   "data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
   providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);

var labResult = new LabResult { Result = "bad", Patient = pat };

int recordAffected = db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

这是我的背景:

public class HospitalContext : DbContext
{
    static HospitalContext()
    {
        Database.SetInitializer(new HostpitalContextInitializer());
    }

    public DbSet<Patient> Patients { get; set; }
    public DbSet<LabResult> LabResults { get; set; }
}

public class …
Run Code Online (Sandbox Code Playgroud)

sql asp.net entity

88
推荐指数
4
解决办法
9万
查看次数

实体框架 - 有没有办法在没有Include()的情况下自动加载子实体?

有没有办法装饰你的POCO类来自动加载子实体而不必Include()每次加载时都使用它们?

假设我有一辆Class Car,车轮,门,发动机,保险杠,Windows,排气等的复杂类型属性.在我的应用程序中,我需要从我的DbContext 20个不同的地方加载我的汽车,不同的查询,等等.不希望每次我想加载我的汽车时都要指定我想要包含所有属性.

我想说

List<Car> cars = db.Car
                .Where(x => c.Make == "Ford").ToList();

//NOT .Include(x => x.Wheels).Include(x => x.Doors).Include(x => x.Engine).Include(x => x.Bumper).Include(x => x.Windows)


foreach(Car car in cars)
{

//I don't want a null reference here.

String myString = car.**Bumper**.Title;
}
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式装饰我的POCO类或我的OnModelCreating()或在EF中设置一个配置,它会告诉它在我装车时加载我汽车的所有部件吗?我想热切地这样做,所以我的理解是让我的导航属性变得虚拟.我知道NHibernate支持类似的功能.

只是想知道我是否遗漏了什么.提前致谢!

干杯,

弥敦道

我喜欢下面的解决方案,但我想知道我是否可以嵌套对扩展方法的调用.例如,假设我与Engine有类似的情况,它有很多部分,我不希望包含在任何地方.我可以这样做吗?(我还没有找到一种工作方式).这样,如果以后我发现Engine需要FuelInjectors,我只能在BuildEngine中添加它,而不必在BuildCar中添加它.此外,如果我可以嵌套调用,如何将调用嵌套到集合中?想从我的BuildCar()中为每个轮子调用BuildWheel()?

public static IQueryable<Car> BuildCar(this IQueryable<Car> query) {
     return query.Include(x => x.Wheels).BuildWheel()
                 .Include(x => x.Doors)
                 .Include(x => x.Engine).BuildEngine()
                 .Include(x => x.Bumper)
                 .Include(x => x.Windows);
}

public …
Run Code Online (Sandbox Code Playgroud)

entity code-first entity-framework-4.1 entity-framework-4.3

70
推荐指数
3
解决办法
4万
查看次数

Symfony2实体集合 - 如何添加/删除与现有实体的关联?

1.快速概述

1.1目标

我想要实现的是创建/编辑用户工具.可编辑的字段是:

  • 用户名(类型:文字)
  • plainPassword(类型:密码)
  • 电邮(类型:电邮)
  • 组(类型:集合)
  • avoRoles(类型:集合)

注意:最后一个属性未命名为$ roles因为我的User类正在扩展FOSUserBundle的User类并且覆盖角色带来了更多问题.为了避免它们,我只是决定将我的角色集合存储在$ avoRoles下.

1.2用户界面

我的模板由两部分组成:

  1. 用户表格
  2. 表格显示$ userRepository-> findAllRolesExceptOwnedByUser($ user);

注意:findAllRolesExceptOwnedByUser()是一个自定义存储库函数,返回所有角色的子集(尚未分配给$ user的角色).

1.3所需功能

1.3.1添加角色:


    WHEN user clicks "+" (add) button in Roles table  
    THEN jquery removes that row from Roles table  
    AND  jquery adds new list item to User form (avoRoles list)

1.3.2删除角色:


    WHEN user clicks "x" (remove) button in  User form (avoRoles list)  
    THEN jquery removes that list item from User form (avoRoles list)  
    AND  jquery …

php forms collections entity symfony

68
推荐指数
4
解决办法
4万
查看次数

如何在Entity Framework 6.0中禁用迁移

我试图忽略使用Entity Framework 6.0 rc1的"自动"迁移.我的问题是我现在不想要这个功能,每次运行我的应用程序时,我都可以看到所有实体日志都试图创建所有表.

期待感谢.

entity entity-framework ef-migrations

66
推荐指数
3
解决办法
7万
查看次数