codefrist-Entity Framework使用Code First 插入数据时,多出来额外的数据

问题描述

Entity Framework使用Code First 插入数据时,多出来额外的数据

在项目总使用Code First遇到坑爹的问题了
例如我有如下类:
public class Catalog
{
public Int32 ID { get; set; }
public String CatalogName { get; set; }
public Catalog() { }
public Catalog(Int32 ID, String Name)
{
this.ID = ID;
this.CatalogName = Name;
}
}

然后有另一个类引用该类:
public class CatalogClassify
{
public Int32 ID { get; set; }
public Catalog catalog { get; set; }
public String Name { get; set; }
public CatalogClassify(){ }
    public CatalogClassify(Int32 ID, Catalog catalog, String Name){
this.ID = ID;
this.catalog = catalog;
this.Name = Name;
}
}

这两个类都映射到数据库中并存储起来。
假如我已有一个Catalog对象映射到数据库其数据库中相应的数据为:{1,"MyName"};
而我现在要一个CatalogClassify对象也插入到数据中其代码为:
Catalog catalog = new Catalog(1,"MyName")
CatalogClassify myCatalog = new CatalogClassify(1,catalog,"TestName");
然后在将myCatalog对象插入到数据库中,这时会发现在Catalog对象对应的表中有两行数据,分别为{1,"MyName"},{2,"MyName"}.
但是这不是我想要的结果,我只是想让myCatalog对象引用一个已有的Catalog对象,而不是在数据库中创建任何新的数据了。
求大神提供解决方案啊

解决方案

这里就不要新建
Catalog catalog = new Catalog(1,"MyName")

而是从数据库把id=1的找出来

时间: 2024-11-18 04:06:34

codefrist-Entity Framework使用Code First 插入数据时,多出来额外的数据的相关文章

many o any-多对多存数据时,中间表没有数据

问题描述 多对多存数据时,中间表没有数据 //action里的add方法public String add(){ model.getRoles().addAll(roleService.getByIds(roleIds)); System.out.println(roleIds[0]);//能正确输出值 System.out.println(model.getRoles());//能正确得到对象 userService.add((User) model); return ""_list

发送tcp数据时,不同socket的数据及ACK有无优先级区别

问题描述 发送tcp数据时,不同socket的数据及ACK有无优先级区别 同时两个tcp流 一个正在发送数据,sendbuffer内还有多个包未发 另一个收到数据 需要发送ACK 那这个ACK是不是要等第一个流的sendbuffer被发完后再发送? 能不能插队? 谢谢

使用NuGet助您玩转代码生成数据:Entity Framework 之Code First

在Code First中,编写完代码并运行之后,我们的Model会同步到Db中,但是往往我们 需要的是编写完Model就生成数据库,而不是等UI部分完成并运行之后才看到数据库,借助NuGet程序包管理器 可以让我们即时完成Code=>DB. 准备:1.本人开发工具为VS2012,使用的是.NET Framework 4.5 (EF5): 2.然后确保已在VS扩展中安装了最新的"NuGet程序包管理器": 3.常用的三行 NuGet用于EF命令(当然可以直接用命令"get

asp.net中sql server插入数据时获取自增长列数据

最近的数据库编程中需要在执行sql insert后检索自增长列的值.数据库中获取这个值很简单:返回最后插入记录的 自动编号直接使用SELECT IDENT_CURRENT('TableName') 即可. 还可以用如下代码  代码如下 复制代码 select @@identity 在insert后执行这一句就行了.在网上看有人在insert之前加了一句:  代码如下 复制代码 set nocount on; 这一句 表示不要返回查询的行计数. 于是:    代码如下 复制代码 set nocou

处理大数据时如何确保断电不丢数据

今年7.8月份杭州实行拉闸限电时,导致阿里余杭机房的机器意外断电,造成HDFS集群上的部分数据 丢失. 在Hadoop 2.0.2-alpha之前,HDFS在机器断电或意外崩溃的情况下,有可能出现正在写的数据丢失的 问题.而最近刚发布的CDH4中HDFS在Client端提供了hsync()的方法调用(HDFS-744),从而保证在机器崩 溃或意外断电的情况下,数据不会丢失.这篇文件将围绕这个新的接口对其实现细节进行简单的分析,从 而希望找出一种合理使用hsync()的策略,避免重要数据丢失. H

如何在程序运行读取数据时文本框中的数据不断的累加

问题描述 大家帮帮忙!在这里谢谢你们. 解决方案 解决方案二:用textBox1.Text+=str;连加累集

Entity Framework 5.0系列之数据操作

Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象:跟踪对象所做的更改:并发处理:将对象更改传播到数据源等.今天我们就一起讨论如何利用Entity Framework进行查询.插入.更新和删除数据. 查询 我们将使用AdventureWorks数据库来进行今天的所有演示,因此开始之前请准备好相应的数据库.在EF中进行查询应该说是相当简单,只需要定义一个类继承于"DbContext",然后定义对应的"DbSe

Entity Framework 5.0系列之自动生成Code First代码

在前面的文章中我们提到Entity Framework的"Code First"模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power Tools如何基于现有数据库生成数据类和数据库上下等. Entity Framework Power Tools 基于现有数据库生成POCO数据类和数据库上下文需要借助Visual Studio一个扩展插件-- Entity Framework Power Tools(一个Code First反向工

Entity Framework 自动生成CodeFirst代码

原文:Entity Framework 自动生成CodeFirst代码 前言 在前面的文章中我们提到Entity Framework的"Code First"模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power Tools如何基于现有数据库生成数据类和数据库上下等. Entity Framework Power Tools 基于现有数据库生成POCO数据类和数据库上下文需要借助Visual Studio一个扩展插件-- Entit