关于DateTime值的比较,我在C#下的实体框架(Code First)遇到了问题.我使用下面定义的类Validity(在本例中简化)作为其他实体的超类,这些实体应该具有及时的有效性.
public abstract partial class Validity {
[Key]
public int ID { get; set; }
public DateTime? ValidFrom { get; set; }
public DateTime? ValidTo { get; set; }
/**
* @brief This method builds an IQueryable from another IQueryable,
* with added restriction on ValidityFrom/To
*
* An object's validitiy is defined to
* 1. start at timestamp ValidFrom (=inclusive) and
* 2. to end before ValidTo (=exclusive).
* 3. If ValidFrom or ValidTo is NULL, it means …Run Code Online (Sandbox Code Playgroud) datetime entity-framework compare sql-server-2008 entity-framework-5
我正在写一个mvc 4 c#.net 4.5网站
我想创建一个新的公司对象并注册一个链接到该公司的新用户.
我的帐户模型是:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public string PhoneNumber { get; set; }
public bool MarketingEmailOptin { get; set; }
public bool isDisabled { get; set; }
public virtual Company CompanyICanEdit { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我调用以下内容,则会将用户添加为罚款,但对于CompanyICanEdit字段为null:
WebSecurity.CreateUserAndAccount(addCompanyViewModel.User.UserName, …Run Code Online (Sandbox Code Playgroud) 我有一个有10亿行的桌子.当我查询clausule和值是硬编码的时候(tabulka = tabulka.Where(x => x.Value.Contains("value")sql查询是作为批处理发送到sql.它花了大约5秒.当值不是硬编码(tabulka = tabulka.Where(x => x.Value.Contains(value))时,查询发送一个RPC并花了15秒.
这是EF发送给SQL(来自Profiler)的真实示例:
exec sp_executesql N'SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[Tabulka] AS [Extent1]
WHERE ([Extent1].[Column] LIKE @p__linq__0 ESCAPE N''~'') AND ([Extent1].[Column] LIKE @p__linq__1 ESCAPE N''~'')
) AS [GroupBy1]',N'@p__linq__0 nvarchar(4000),@p__linq__1 nvarchar(4000)',@p__linq__0=N'%text1%',@p__linq__1=N'%text2%'
Run Code Online (Sandbox Code Playgroud)
这需要15秒.
当我添加OPTION(RECOMPILE)时花了5秒钟:
exec sp_executesql N'SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[Tabulka] AS [Extent1]
WHERE ([Extent1].[Column] LIKE @p__linq__0 ESCAPE N''~'') AND ([Extent1].[Column] LIKE @p__linq__1 ESCAPE N''~'')
) AS [GroupBy1] …Run Code Online (Sandbox Code Playgroud) 我想在应用程序中跟踪各种对象.对象是计算机,照相机,交换机,路由器等.我希望各种对象从一个名为Device的对象继承,因为它们都有一些共同的属性(即IP地址,MAC地址等)我喜欢创建对象使用设计器(Model First),但我不喜欢从模型更新数据库的困难.基本上,我不喜欢删除数据库并重新创建它,特别是在我开始填充数据库之后.我尝试的另一种方法是在SQL Server中使用SSMS创建数据库,但是当我从数据库创建POCO时,实体不会相互继承.对我的情况有什么好处?
有没有Detach(object entity)对DbContext实体框架5.
要分离实体,现在需要改变状态.也许我错过了一些东西,但这似乎比使用该Detach方法更不直观和可读:
context.Entry(myEntity).State = EntityState.Detached;
Run Code Online (Sandbox Code Playgroud)
我很想创建一个扩展方法来恢复Detach方法:
public static void Detach(this MyEntities context, object entity)
{
context.Entry(entity).State = EntityState.Detached;
}
Run Code Online (Sandbox Code Playgroud)
Microsoft删除EF 5中的DbContext.Detach()方法的原因是什么?
我是Entity Framework的新手,过去我直接使用Enterprise Library或ADO.NET将模型映射到数据库表.我使用的一种模式是将我的公共审计字段放在基类中的每个表中,然后为每个对象继承该基类.
我采取两个步骤来保护两个字段(Created,CreatedBy):
基类:
using System;
namespace App.Model
{
[Serializable()]
public abstract class BaseEntity
{
public bool IsActive { get; private set; }
public DateTimeOffset Created { get; private set; }
public string CreatedBy { get; private set; }
public DateTimeOffset LastUpdated { get; protected set; }
public string LastUpdatedBy { get; protected set; }
private BaseEntity() { }
protected BaseEntity(DateTimeOffset created, string createdBy)
{
IsActive = true;
Created = created;
CreatedBy = createdBy;
LastUpdated …Run Code Online (Sandbox Code Playgroud) 我正在将现有的Web应用程序(使用Entity Framework 5)迁移到Azure Web角色.
正在将数据库连接字符串从文件移动web.config到ServiceConfiguration.*.cscfg文件.
问题是在自动生成的 Model.Context.cs文件中,我的实体类定义如下:
public partial class MyEntities : DbContext
{
public MyEntities()
: base("name=MyEntities")
{ }
// DbSets, etc
}
Run Code Online (Sandbox Code Playgroud)
这总是会MyEntities在web.config.如何覆盖此构造函数以便我可以从ServiceConfiguration.*.cscfg文件中传入连接字符串?
我可以从这个类中派生出来,就像这样:
public class MyCloudEntities : MyEntities
{
public MyCloudEntities()
: base(CloudConfigurationManager.GetSetting("MyEntities"))
{ }
}
Run Code Online (Sandbox Code Playgroud)
但后来我必须改变MyEntities代码库中的每个实例,并且它不会阻止开发人员MyEntities在将来使用.
entity-framework web-config azure azure-web-roles entity-framework-5
我有以下两个模型和DbContext:
public class TestDbContext : DbContext
{
public IDbSet<Person> People { get; set; }
public IDbSet<Car> Cars { get; set; }
}
public class Person
{
public Person()
{
ID = Guid.NewGuid();
}
public Guid ID { get; set; }
public string Name { get; set; }
public virtual List<Car> Cars { get; set; }
}
public class Car
{
public Car()
{
ID = Guid.NewGuid();
}
public Guid ID { get; set; }
public string Name { get; set; …Run Code Online (Sandbox Code Playgroud) c# orm entity-framework relational-database entity-framework-5
我正在使用带有Entity Framework 5的表值函数.我刚收到此错误:
参数集合中已存在名为"EffectiveDate"的参数.参数名称在参数集合中必须是唯一的.参数名称:参数
它是由我加入对具有相同参数的表值函数的调用引起的.
这是EF的错误/限制吗?有解决方法吗?现在我正在自动生成代码(.edmx文件).
entity-framework parameter-passing user-defined-functions entity-framework-5
如何防止使用生成的DbContext的无参数构造函数?
var dcx = new DataEntities();
Run Code Online (Sandbox Code Playgroud)
默认构造函数由T4模板生成,因此我无法在分部类中覆盖它.我宁愿它不编译,但运行时错误也会很好.