我使用的是实体框架核心版本。2.2.4,我正在维护一个单独的程序集,用于维护ef生成的迁移。在应用程序启动期间,当我尝试执行context.Database.Migrate()时,在输出日志中得到以下消息 No migrations were found in assembly 'MyProject.Core'. 我已经包含了optionsBuilder.UseSqlite(GetConnectionString(), builder => builder.MigrationsAssembly("MyProject.Core"));来加载适当的程序集来查
我需要映射EF实体到相应的DTO。在下面的示例中,我有EF实体--父和子实体,子实体包含对父对象的引用。我还有ParentDto和ChildDto (DTO),ChildDto包含对ParentDto (非父级)的引用。因此,如何在下面的方法中将ParentDto引用分配给ChildDto实例:
public Task<List<ParentDto>> Method()
{
return (Context.Set<Parent>()
.Where(someCondition)
.Select(p => new P
以前,回到EF Frameowrk时代,当需要与实体相关的实体时,以下方法就足够了。
private IQueryable<T> EntitySet(params Expression<Func<T, object>>[] includes)
{
var set = Context.Set<T>().Where(x => !x.IsDeleted);
if (includes != null)
{
foreach (var include in includes
我正在尝试带来一些数据从Dynamics 2011使用LINQ。其目标是将自某一日期以来发生更改的所有联系人记录或自同一日期以来更改的子实体(PERC文件)都带来。该查询如下所示:
// Bring all students who have changes (at Contact entity) after specific date
// momentInTime or the status of any of their perc files has been changed since
// that date
var students = (from c in ContactSet
我想首先使用EF代码来处理一个自定义关联(或导航属性),它不是基于键,而是基于实体的一个属性值。
我的课是
public class MyConfig
{
public int Id { get; set; }
public int InstanceNumber { get; set; }
public bool IsValid { get; set; }
public int Code { get; set; }
}
public class MyAsset
{
public int Id { get; set; }
public strin
在没有主键的情况下,从Server中的表中读取表时遇到问题。我已经定义了一个实体类,例如:
public class PerfData
{
public Int64 ActivityId { get; set; }
public Int64 Numbers{ get; set; }
}
和DbContext类,例如。
class MyDBContext
{
public DbSet<PerfData> {get; set;}
}
实体类型记录每个执行的ActivityId的数字,因此在Server表中没有定义主键。但是,当我使用以下代码检索数据时,EF抱怨
使用实体框架和LINQ,我如何实现这个TSQL:
SELECT Children.ChildCount, Parent.*
FROM Parent
LEFT JOIN (SELECT ParentID, COUNT(ChildID) AS ChildCount FROM Child GROUP BY ParentID) AS Children
ON Parent.ID = Children.ParentID
请注意,这只是已经包含其他相关实体的更大LINQ查询的一小部分,因此使用RawSQL查询不是一个选项。此外,父表有大约20列,我希望不必单独指定每个列来保持代码的可维护性。
编辑:为了澄
假设我正在使用此示例中的图形数据库(SQL Server 2017):
我有以下SQL查询:
-- Find Restaurants that John likes
SELECT Restaurant.name
FROM Person, likes, Restaurant
WHERE MATCH (Person-(likes)->Restaurant)
AND Person.name = 'John';
我使用EF 6.1.3在C#中创建了一个模型,它会自动生成数据库中的所有类和所有内容(数据库中的EF Designer )。这一切都运行得很好。我甚至可以使用一个简单的
我有一个数据库实体Foo,它具有以下属性:
public partial class Foo
{
public string Name { get; set; }
public string Type { get; set; }
etc...
}
我希望获得记录,其中Type是一组类型之一,其中有两个或多个相同名称的记录符合此条件。
我的LINQ声明是:
var records = databaseContext.Foo
.Where(r => listOfTypes.Contains(r.Type))
.GroupBy(r => r.Name)
.Wher
我有一个包含其他实体列表的实体。实体列表包含主键(标识)、外键和字符串。当我试图附加父实体时,我会得到异常An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key。
由于某些原因,实体框架(EF)认为这是一个重复的记录。这些记录确实具有相同的外键,但作为主键的属性(int类型的Id)被设置为0,据我所知,该属性是可以接受的,因为该列是一个标识列。
有人知道我做错了什么吗?
我在ef 5应用程序中使用ef pattren。create()方法存在于IDbSet中,在ef7的DbSet中不存在该方法。
Create()方法在EF5中的描述如下:
为该集合的类型创建实体的新实例。请注意,此实例未添加或附加到集合。如果将底层上下文配置为创建代理,并且实体类型满足创建代理的要求,则返回的实例将是一个代理。
代码示例:
public interface IRepository<T> where T : IDisposable {
T Create();
}
public class Repository<T> : IReposito