我过去几年一直在使用Linq2Sql,并习惯了一些功能,比如在DB中有一个int或一个tinyint字段,我在DBML文件中重新定义为枚举类型,所以运行SQL很方便查询与enum直接比较(请参阅此处 3年前关于该主题的问题,以及那里的答案).
现在我正在使用Entity Framework 5开始一个项目,虽然EF看起来已经有很多东西正确,L2S没有(例如分离/重新连接),我很沮丧地看到似乎没有任何容易将这种字段的C#类型更改为枚举的方法.
有没有人找到一种干净利落的方法,这样我就可以得到如下查询:
var q = entities.Things.Where(t => t.Status == TStatus.Closed);
Run Code Online (Sandbox Code Playgroud)
(不,我不想要投射int或byte内联).
我使用"模型优先"实体框架5.0.在4.x中有一个错误:设计者无法使用identy和defaultValue处理主列guid:"newid()"(来源:http://leedumond.com/blog/using-a-guid-as-an -entitykey-in-entity-framework-4 /)
在EF5中仍然无法使用它吗?将c#guid转换为sql"uniqueid"有什么问题?
我的表中有以下列
我正在编写一个程序,它将遍历每一行并对Name字段执行一些操作.由于我只使用Name字段并且Data字段非常大,是否可以指示EF仅加载Id和Name字段?
我一直在尝试使用代码优先迁移,并取得了一些有限的成功,但我遇到的一个问题是我没有告诉它哪个项目有配置信息.它为我生成了一些类,我总是让它全部工作,但我想我应该解决配置问题并重新开始.
错误.既然我已经尝试删除所有迁移内容,我发现无法重新安装它.我已经卸载并重新安装了EF 5,但是当我使用该Enable-Migrations命令时,我收到一个异常报告:
System.Runtime.Serialization.SerializationException:成员'System.Data.Entity.Migrations.Design.ToolingFacade + GetContextTypeRunner,EntityFramework,Version = 4.4.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的类型未解析.
无论我现在做什么,我似乎都无法超越.有任何想法吗?
我目前正在通过Code First方法学习实体框架(EF).我想在新创建的数据库(即由EF创建)上建模Professors和Classes 之间的简单一对多关系.
在我的模型中,a Professor有一个Classes 的集合.A Class总是有一个Professor与之关联的(即相应的属性永远不为null).我可以创建和存储一个Class和一个关联的Professor,但是当我访问从数据库中检索到的Classes属性时Professor,它是空的.但是,从a导航Class到其中Professor是可能的.
考虑以下模型:
class Class
{
public int Id { get; set; }
public string Title { get; set; }
public virtual Professor Professor { get; set; }
}
class Professor
{
public int Id { get; set; }
public string Name { get; set; }
private ICollection<Class> classes = null;
public virtual …Run Code Online (Sandbox Code Playgroud) 我想询问我的客户,他们的生日还未到来.
我已经尝试过这个查询,当然 - 它已经失败了:
Addresses.Where(adr => adr.DateOfBirth != null && adr.DateOfBirth.Value >
DateTime.Now).Take(15).ToList();
Run Code Online (Sandbox Code Playgroud)
当然这不能正常工作(如果你将来出生的话),我想知道如何在Nullable<DateTime>没有一年的情况下查询我的情况?
我正在尝试编写一个方法来创建数据库并在给定连接字符串的情况下对其运行迁移.
我需要多个连接,因为我在单独的数据库中记录审计日志.我使用类似的代码从app.config中获取连接字符串
ConfigurationManager.ConnectionStrings["Master"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
代码使用我的app.config中定义的第一个连接字符串而不是其他连接字符串,这使我认为它以某种方式从app.config获取连接字符串我不知道.
如果不存在,我创建数据库的代码是
private static Context MyCreateContext(string ConnectionString)
{
// put the connection string where the factory method can get it
AppDomain.CurrentDomain.SetData("ConnectionString", ConnectionString );
var factory = new ContextFactory();
// I know I need this line - but I cant see how what follows actually uses it
Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context,DataLayer.Migrations.Configuration>());
var context = factory.Create();
context.Database.CreateIfNotExists();
return context
}
Run Code Online (Sandbox Code Playgroud)
Migrations.Configuration中的代码是
Public sealed class Configuration : DbMigrationsConfiguration<DataLayer.Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
上下文工厂代码是
public class ContextFactory : …Run Code Online (Sandbox Code Playgroud) 有没有办法评估一个字符串是否包含列表的某些元素或列表的所有元素?使用linq实体?
我一直试图使用谓词构建器和其他人,但我不是%100进入thoses.
编辑
就像是:
string[] words = searchString.Split(' ');
var resultado = db.users
.Where(u => u.fullName.contains(words) )
.Select(s => new { user_id = s.id_user, nombre = s.fullName})
.ToList();
Run Code Online (Sandbox Code Playgroud) 出于某种原因,我无法让我的应用程序在应用程序启动时使用一些测试数据为数据库播种.
执行顺序:
1) Application_Start() in Global.asax
- Database.SetInitializer<LocatorContext>(new DropCreateDatabaseAlways<LocatorContext>());
- new LocatorContext.DropCreateIfChangeInitializer()
.InitializeDatabase(new LocatorContext());
2) onModelCreating() in my DBContext class
3) Page is rendered and no data is inserted into the database
Run Code Online (Sandbox Code Playgroud)
任何关于为什么或如何解决它的想法将非常感激.
我的Global.asax.cs文件
//Global.asax.cs
protected void Application_Start()
{
Database.SetInitializer<LocatorContext>(new DropCreateDatabaseAlways<LocatorContext>());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)
我的DBContext类
//ClubLocatorContext.cs
using System;
using System.Collections.Generic;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using ClubLocator.Models;
using ClubLocator.Models.ViewModels;
namespace ClubLocator.DAL
{
public class LocatorContext : DbContext
{
public DbSet<Prospect> Prospects { get; set; …Run Code Online (Sandbox Code Playgroud) 我们最近将数据库移动到新服务器.但是,当时我们不允许Code First迁移来创建数据库.我们使用另一种工具来迁移表和数据.在此期间未移动__MigrationHistory表.__MigrationHistory是我们原始数据库中的系统表.
我似乎无法找到导入或导出__MigrationHistory表的方法,因此我们可以允许将来的迁移.
我们唯一的另一个想法是让应用程序重新创建数据库并将复制的数据迁移到新版本的数据库.唯一的问题是我们有数百万条记录需要移动,这是一个漫长的过程.
sql-server entity-framework sql-server-2012 entity-framework-5