小编Lad*_*nka的帖子

使用EF4 Code First:如何在不丢失数据的情况下更改模型

在我的Global.asax中,我有以下几行:

Database.SetInitializer<myDbSupport>
    (new DropCreateDatabaseIfModelChanges<myDbSupport>());
Run Code Online (Sandbox Code Playgroud)

如果我没有这个,那么当我更改模型时,sdf数据库将没有正确的结构.这在开发环境中是可以的,但是当我转向生产并希望更新数据库结构时,我当然不能放弃表,并丢失数据.

是否可以编写数据库更改脚本,并在部署具有更改结构的模型之前运行此更新?

database asp.net code-first entity-framework-4.1

8
推荐指数
1
解决办法
3491
查看次数

实体框架将DateTimeOffset映射到SQL Server DateTime

有没有办法将DateTimeOffset属性映射到SQL Server datetime列,假设您不能更改任何一方,这意味着属性和列必须保留这些日期类型?

我知道最简单的方法是让它们匹配,但想知道是否有办法解决这个问题.我正在研究自定义映射,但似乎我必须自己映射所有列,而不仅仅是DateTimeOffset属性.

我试过了:

modelBuilder.Entity<Customer>().Property(c => c.LastModifiedOn).HasColumnType("datetime");
Run Code Online (Sandbox Code Playgroud)

但那引发了Member Mapping specified is not valid错误.

我希望能够将UtcDateTime DateTimeOffset属性值放在数据库中,并且当读取时具有DateTimeOffsetUTC(即偏移量为零).

谢谢.

mapping entity-framework ef-code-first

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

如何映射具有延迟加载属性的实体(不会导致它们加载)?

我在MVC项目中使用EF 4.1和代码优先,而AutoMapper将实体映射到视图模型.

在使用代码优先之前,我能够排除导航属性,以防止加载任何尚未加载的内容.我在我的查询中使用.Include()来包含我需要的引用,以避免额外的数据库往返.

但是,使用代码优先,我的实体只公开实体属性(如果有多个,则显示ICollection).如何在不触发负载的情况下知道是否已加载?

假设可以这样做,有没有办法使这成为AutoMapper的默认行为,这样我就不必在每个实体上明确排除成员?

c# entity-framework automapper ef-code-first entity-framework-4.1

7
推荐指数
1
解决办法
2274
查看次数

为什么实体框架代码优先(使用现有数据库)继续尝试从EdmMetadata表获取数据?

我正在尝试对现有数据库执行一些实体框架代码优先编程..但我一直在我的Sql Profiler中看到这段代码: -

SELECT   TOP ( 1 ) [Extent1].[Id]        AS [Id],
                   [Extent1].[ModelHash] AS [ModelHash]
FROM     [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC
Run Code Online (Sandbox Code Playgroud)

这个EdmMetadata表到底是什么?为什么我的EF代码试图从那里获取Id和ModelHash?

请记住,我正在尝试对抗现有数据库.

干杯:)

.net c# entity-framework entity-framework-4.1

7
推荐指数
1
解决办法
5687
查看次数

EF4 Code First:如何仅更新特定字段

如何仅更新实体上的某些字段?

我有一个像这样的用户实体:

public class User
{
    public string UserId { get; set; }
    public string PasswordHash { get; set; }
    public bool IsDisabled { get; set; }
    public DateTime AccessExpiryDate { get; set; }
    public bool MustChangePassword { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime LastActivity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果我想更新用户实体,但又不想更改用户密码,我该怎么做?

目前,我正在使用以下代码更新实体:

using (var _cnt = new STQContext())
{
   _cnt.Entry<Item>(item).State = System.Data.EntityState.Modified;
   _cnt.SaveChanges();
   return;
}
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first entity-framework-4.1

7
推荐指数
1
解决办法
1703
查看次数

如何避免使用jquery ajax中的跨域策略来使用wcf服务?

如何避免在jquery ajax中使用跨域策略来使用wcf服务?

我需要在web.config中为跨域策略做些什么?

wcf jquery cross-domain

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

将 MAXDOP 添加到 Linq to Entities

我正在寻找 linq toEntity 扩展,它允许将 OPTION(MAXDOP x) 添加到生成的查询中。对于查询,我想限制它们的 SQL Server 资源。

就像是:

Customers.WithMaxDop(2).Where(...) ..
Run Code Online (Sandbox Code Playgroud)

找不到。在我尝试深入创建自己的扩展之前,我想先向你们寻求帮助 - 你们建议如何这样做?

谢谢!

sql-server linq-to-entities entity-framework

7
推荐指数
1
解决办法
2740
查看次数

EF Code First Custom Collections

在创建代码时,您可以实现第一个集合实现ICollection的自定义类.以下代码概念性不实际

public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public Category Category { get; set; }
}

public class Category
{
    public int CategoryId { get; set; }
    public string Name { get; set; }
    //Want to Avoid This
    public ICollection<Product> Products { get; set; }
    //Use his instead of above
    public ProductList ProductsInCategory {get;set;}
}
public class ProductsList :ICollection<Product>
{
   public int DiscontinuedProductsCount
   {
        return internalList.Count();
   }
    //Icollection Methods …
Run Code Online (Sandbox Code Playgroud)

ef-code-first entity-framework-4.1

7
推荐指数
1
解决办法
1115
查看次数

是否存在在基于DDD的分层体系结构中的模型和数据访问层之间使用LINQ的建议模式

我一直在阅读Tim McCarthy 关于.NET中DDD精彩书籍.但是在他的示例应用程序中,他的基础数据访问是使用SqlCE并且他手工编写SQL内联.

我一直在使用一些模式来利用Entity Framework,但我已经陷入了如何将IRepository linq查询映射到底层数据访问层的问题.

我有一个名为的具体存储库实现.

public EFCustomerRepository : IRepository<DomainEntities.Customer> 
{
    IEnumerable<DomainEntities.Customer> GetAll(
                     Expression<Func<DomainEntities.Customer, bool>> predicate)
    {
        //Code to access the EF Datacontext goes here...
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的EF模型中,我正在使用POCO实体,但即便如此,我的DomainEntity.Customer和我的DataAccessLayer.Customer对象之间也没有原生映射.

所以我不能只Expression<Func<DomainEntities.Customer, bool>> predicate作为参数传递给EFContext.Customers.Where(...);

是否有一种简单的方法来映射 Expression<Func<T, bool>> predicate=>Expression<Func<TOTHER, bool>> predicate

或者我这样做是错的?任何建议/指针赞赏.

c# linq domain-driven-design entity-framework object-object-mapping

7
推荐指数
1
解决办法
375
查看次数

是否可以将 Assembly.ReflectionOnlyLoad 与发布者策略/程序集版本控制一起使用?

我的目标:

我们允许将我们的产品与由于许可而未作为我们产品的一部分安装的第三方组件(库)集成。目前我们只想加载与第三方组件相关的功能,前提是这些组件安装在客户端的机器上。

当前解决方案:

我正在使用Assembly.ReflectionOnlyLoad提供第三方程序集的全名来在应用程序加载相关功能之前验证第三方组件的安装。这适用于以下场景:

  • 库的确切版本安装到 GAC
  • 库的确切版本被复制到应用程序目录/探测路径

问题:

现在我需要修改解决方案以支持发布者策略(将程序集绑定重定向到新版本)。我刚刚测试了我的代码,它似乎ReflectionOnlyLoad忽略了部署到 GAC 的发布者策略,因此即使正确安装了第三方程序集(具有程序集重定向的新版本),我的机制也不会加载预期的功能。

如果我删除我的验证(= 每次都会加载功能),应用程序将正确加载新版本的第三方程序集,因此发布者策略可以正常工作,因为功能仍然依赖于旧版本进行编译。

使用版本控制和程序集重定向时,如何验证 GAC 和探测路径中程序集的存在?

.net c# versioning assemblies loading

7
推荐指数
2
解决办法
1963
查看次数