我看到很多关于首先使用EF代码的示例,其中POCO显示如下:
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public virtual Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,看看Blog房产.不应该是这样的:
private Blog blog;
public virtual Blog Blog
{
get
{
return blog;
}
set
{
blog = value;
if (blog != null)
{
BlogId = blog.BlogId;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,既然你已经用外键"污染"了你的模型,你不应该至少让它与参考同步吗?或者你不应该依赖于BlogId阅读数据(例如,你想知道特定BlogId列表是否在列表中).或者也许有一个神奇的属性DbContext …
entity-framework ef-code-first entity-framework-4.1 entity-framework-5
它只是我还是这似乎不起作用?
在模型中我首先拖入一个简单的表并创建一个枚举(通过转换为枚举).现在我尝试了在对话框中创建枚举项目和不创建枚举项目,但如果我勾选参考外部类型,我得到:
指定的架构无效.错误:无法为概念类型"ControlPanelDevModel.EventType"找到相应的对象图层类型.
根据我的研究,我读到调用DbContext.Entry(someEntity)会自动将实体附加到上下文.
但是,当我这样做时,我发现实体的状态是分离的.
任何人都可以了解这一点以及DbContect.Entry的工作原理.我正在使用EF 5.0
谢谢.
说我有这样的东西叫做 Controller:
using (var context = new SqlContext())
{
context.Items.Add(new Item("item1"));
}
Run Code Online (Sandbox Code Playgroud)
我应该打电话context.SaveChanges();吗?
如何在代码首次迁移的配置类的Seed方法中获取App_Data文件夹的路径.
我想从我放在App_Data文件夹中的文件中读取,并且在update-database命令之后运行Seed方法.HttpContext.Current.Server.MapPath显然不起作用,因为此时没有HttpContext.
ef-code-first asp.net-mvc-4 ef-migrations entity-framework-5
我有一个devexpress GridControl,我正在设置它的数据源,如下所示:
var regs = (from vcap in context.chaps
select vcap);
gridControl1.DataSource = new BindingList<chaps>(regs.ToList());
Run Code Online (Sandbox Code Playgroud)
但是当我使用网格时,我添加或删除的行不会被保存,只会保存对初始行的更改.
如果我这样做:
gridControl1.DataSource = context.chaps.Local;
Run Code Online (Sandbox Code Playgroud)
我没有得到任何行,AddNewRow甚至没有在视觉上添加新行.
如果我这样做:
gridControl1.DataSource = context.chaps.ToList();
Run Code Online (Sandbox Code Playgroud)
我得到了行,可以保存对它们的更改; 行在视觉上被捕获但不在数据库中,但不能AddNewRow.
如果我这样做:
gridControl1.DataSource = context.chaps;
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().
Run Code Online (Sandbox Code Playgroud)
但context.chaps.Local也没有 …
我有一个使用Entity Framework 5的MVC应用程序.在一些地方,我有一个代码可以创建或更新实体,然后必须对更新的数据执行某种操作.其中一些操作需要访问导航属性,我无法让它们刷新.
这是示例(我有简化的代码)
楷模
class User : Model
{
public Guid Id { get; set; }
public string Name { get; set; }
}
class Car : Model
{
public Guid Id { get; set; }
public Guid DriverId { get; set; }
public virtual User Driver { get; set; }
[NotMapped]
public string DriverName
{
get { return this.Driver.Name; }
}
}
Run Code Online (Sandbox Code Playgroud)
调节器
public CarController
{
public Create()
{
return this.View();
}
[HttpPost]
public Create(Car car)
{
if …Run Code Online (Sandbox Code Playgroud) 代码首次迁移后,使用该寄存器添加用户失败:
无法将值NULL插入"Discriminator"列,表'aspnet-BSF2013-20130918101120.dbo.AspNetUsers'; 列不允许空值.
创建用户代码是项目模板(Vs2013,带EF5的MVC项目)生成的默认代码
在成功迁移之前,注册代码有效,所以我猜测会员资格已被EF更改.
我必须像1M实体一样处理以构建事实.应该有大约相同数量的结果事实(100万).
我遇到的第一个问题是批量插入,实体框架很慢.所以我在实体框架中使用了这种最快的插入方式(来自SLauma的回答).我可以在一分钟内快速插入实体,大约100K.
我遇到的另一个问题是缺乏处理所有内容的内存.所以我已经"分页"了处理过程.为了避免内存不足,如果我从我的100万结果事实中列出一个列表,我会得到.
我的问题是即使使用分页,内存也总是在增长,我不明白为什么.每批后没有释放内存.我认为这很奇怪,因为我在循环的每次迭代中获取重建构建事实并将它们存储到DB中.一旦循环完成,那些应该从内存中释放出来.但它看起来并不是因为每次迭代后都没有释放内存.
在我挖掘更多之前,你能否告诉我你是否看错了什么?更具体地说,为什么在迭代循环之后没有释放内存.
static void Main(string[] args)
{
ReceiptsItemCodeAnalysisContext db = new ReceiptsItemCodeAnalysisContext();
var recon = db.Recons
.Where(r => r.Transacs.Where(t => t.ItemCodeDetails.Count > 0).Count() > 0)
.OrderBy( r => r.ReconNum);
// used for "paging" the processing
var processed = 0;
var total = recon.Count();
var batchSize = 1000; //100000;
var batch = 1;
var skip = 0;
var doBatch = true;
while (doBatch)
{ // list to store facts processed during the batch
List<ReconFact> …Run Code Online (Sandbox Code Playgroud) 我正在使用MVC 4和实体框架5.0,我有一个数据库,这个数据库包含6个名为如下的表.
tblUser_family
tblUser_location
tblUser_info
tblUser_photo
tblUser_settings
tblUser_social
Run Code Online (Sandbox Code Playgroud)
当我创建.edmx文件时,设计器一个表中只有5个表"tblUser_settings"没有到来,而所有表都是通过foreginKeys连接的.
我收到了以下错误
错误1错误6004:表'Community.dbo.tblUser_settings'由关系引用,但无法找到.
c# asp.net-mvc-4 entity-framework-5 sql-server-2014 sql-server-2014-express