标签: entity-framework

不支持关键字:"数据源"初始化实体框架上下文

我正在初始化实体框架对象上下文,这给了我关键字不支持错误:

metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\Leftouch\Leftouch.Web\Data\Leftouch.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;App=EntityFramework"

我直接从web.config中获取了连接字符串,并且只修改了文件的路径(我动态设置),而不是使用默认值,显式使用了这个连接字符串.什么可能导致此错误?

entity-framework connection-string

155
推荐指数
3
解决办法
15万
查看次数

对象'DF __*'依赖于列'*' - 将int更改为double

基本上我在我的EF数据库中有一个表,它具有以下属性:

public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Image { get; set; }
public string WatchUrl { get; set; }
public int Year { get; set; }
public string Source { get; set; }
public int Duration { get; set; }
public int Rating { get; set; }
public virtual ICollection<Category> Categories { get; set; }
Run Code Online (Sandbox Code Playgroud)

它工作正常但是当我将Rating的int更改为double时,我在更新数据库时遇到以下错误:

对象'DF_ Movies _Rating__48CFD27E'取决于列'评级'.ALTER TABLE ALTER COLUMN评级失败,因为一个或多个对象访问此列.

有什么问题?

sql database sql-server entity-framework entity-framework-4

155
推荐指数
6
解决办法
13万
查看次数

无法创建类型的常量值此上下文仅支持基元类型或枚举类型

我在下面的查询中收到此错误

无法创建类型的常量值API.Models.PersonProtocol.在此上下文中仅支持基元类型或枚举类型

ppCombined下面是一个IEnumerable对象PersonProtocolType,由2个PersonProtocol列表的concat构成.

为什么这会失败?我们不能使用LINQ JOIN条款里面SELECTJOIN

var persons = db.Favorites
    .Where(x => x.userId == userId)
    .Join(db.Person, x => x.personId, y => y.personId, (x, y) =>
        new PersonDTO
        {
            personId = y.personId,
            addressId = y.addressId,                   
            favoriteId = x.favoriteId,
            personProtocol = (ICollection<PersonProtocol>) ppCombined
                .Where(a => a.personId == x.personId)
                .Select( b => new PersonProtocol()
                 {
                     personProtocolId = b.personProtocolId,
                     activateDt = b.activateDt,
                     personId = b.personId
                 })
        });
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework join

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

如果为空查询,则返回最大值

我有这个问题:

int maxShoeSize = Workers
    .Where(x => x.CompanyId == 8)
    .Max(x => x.ShoeSize);
Run Code Online (Sandbox Code Playgroud)

maxShoeSize如果公司8根本没有工人,那将会是什么?

更新:
如何更改查询以获得0而不是异常?

.net c# linq lambda entity-framework

151
推荐指数
6
解决办法
5万
查看次数

EF LINQ包含多个嵌套实体

好的,我有三层实体,具有以下层次结构:课程 - >模块 - >章节

这是最初的EF LINQ声明:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters))
                .Single(x => x.Id == id); 
Run Code Online (Sandbox Code Playgroud)

现在,我想要包含另一个名为Lab的实体,该实体与课程相关联.

如何包含实验室实体?

我尝试了以下但它不起作用:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
                .Single(x => x.Id == id); 
Run Code Online (Sandbox Code Playgroud)

关于包含第二实体的任何想法?

任何建议或信息都将受到高度赞赏.谢谢!

.net linq entity-framework asp.net-mvc-3 entity-framework-5

148
推荐指数
5
解决办法
16万
查看次数

EF Code First"无效的列名'Discriminator'"但没有继承

我的数据库中有一个名为SEntries的表(参见下面的CREATE TABLE语句).它有一个主键,几个外键,没有什么特别之处.我的数据库中有许多类似于那个表,但由于某种原因,该表最终在EF代理类上有一个"Discriminator"列.

这是在C#中声明类的方式:

public class SEntry
{
    public long SEntryId { get; set; }

    public long OriginatorId { get; set; }
    public DateTime DatePosted { get; set; }
    public string Message { get; set; }
    public byte DataEntrySource { get; set; }
    public string SourceLink { get; set; }
    public int SourceAppId { get; set; }
    public int? LocationId { get; set; }
    public long? ActivityId { get; set; }
    public short OriginatorObjectTypeId { get; set; }
}

public class …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first

144
推荐指数
5
解决办法
10万
查看次数

找不到类型或命名空间名称"DbContext"

我是ASP.NET MVC(3)的新手,并且很难解决Visual Studio中的构建错误:

找不到类型或命名空间名称'DbContext'(您是否缺少using指令或程序集引用?)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace MyProjectName.Models
{   
    public class MachineModel
    {
        // name
        [Required]
        [Display(Name = "Nom de la machine")]
        public string Name { get; set; }

        // IP
        [Required]
        [RegularExpression(@"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",
           ErrorMessage = "Donnez une adresse IPv4 valide.")]
        [Display(Name = "Adresse IP de la machine")]
        public string IP { get; set; }
    }

    public class MachineDbContext : DbContext
    {
        public DbSet<MachineModel> Machines{ get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的两个错误是: …

asp.net-mvc entity-framework visual-studio-2010 visual-studio asp.net-mvc-3

141
推荐指数
6
解决办法
26万
查看次数

LINQ To Entities无法识别方法Last.真?

在此查询中:

public static IEnumerable<IServerOnlineCharacter> GetUpdated()
{
    var context = DataContext.GetDataContext();
    return context.ServerOnlineCharacters
        .OrderBy(p => p.ServerStatus.ServerDateTime)
        .GroupBy(p => p.RawName)
        .Select(p => p.Last());
}
Run Code Online (Sandbox Code Playgroud)

我不得不把它切换到这个才能工作

public static IEnumerable<IServerOnlineCharacter> GetUpdated()
{
    var context = DataContext.GetDataContext();
    return context.ServerOnlineCharacters
        .OrderByDescending(p => p.ServerStatus.ServerDateTime)
        .GroupBy(p => p.RawName)
        .Select(p => p.FirstOrDefault());
}
Run Code Online (Sandbox Code Playgroud)

我甚p.First()至无法使用镜像第一个查询.

为什么在这样一个强大的ORM系统中存在这样的基本限制?

c# orm entity-framework

139
推荐指数
3
解决办法
5万
查看次数

实体框架.Remove()与.DeleteObject()

您可以使用以下两种方法从EF中删除数据库中的项目.

第一个是EntityCollection第二个,第二个是ObjectContext.

什么时候应该使用?

一个优先于另一个吗?

Remove()返回a boolDeleteObject()返回void.

c# database orm entity-framework

138
推荐指数
2
解决办法
13万
查看次数

服务应该总是返回DTO,还是它们还可以返回域模型?

我(重新)设计大规模应用程序,我们使用基于DDD的多层架构.

我们有MVC与数据层(存储库的实现),域层(域模型的定义和接口 - 存储库,服务,工作单元),服务层(服务的实现).到目前为止,我们使用跨所有层的域模型(主要是实体),并且我们仅将DTO用作视图模型(在控制器中,服务返回域模型,并且控制器创建视图模型,其被传递到视图).

我读过很多关于使用,而不是使用,映射和传递DTO的文章.我知道没有任何确定的答案,但我不确定是否可以将域模型从服务返回到控制器.如果我返回域模型,它仍然永远不会传递给视图,因为控制器总是创建特定于视图的视图模型 - 在这种情况下,它似乎是合法的.另一方面,当域模型离开业务层(服务层)时感觉不对.有时服务需要返回域中未定义的数据对象,然后我们要么必须将新对象添加到未映射的域,要么创建POCO对象(这很丑陋,因为有些服务返回域模型,有些有效地返回DTO).

问题是 - 如果我们严格使用视图模型,是否可以将域模型一直返回到控制器,或者我们是否应该始终使用DTO与服务层进行通信?如果是这样,根据需要的服务调整域模型是否可以?(坦率地说,我不这么认为,因为服务应该消耗域名所具有的.)如果我们应该严格遵守DTO,它们应该在服务层中定义吗?(我想是的.)有时很明显我们应该使用DTO(例如,当服务执行大量业务逻辑并创建新对象时),有时很明显我们应该只使用域模型(例如,当成员服务返回贫血用户时( s) - 创建与域模型相同的DTO似乎没有多大意义) - 但我更喜欢一致性和良好实践.

Article Domain vs DTO vs ViewModel - 如何以及何时使用它们?(以及其他一些文章)与我的问题非常相似,但它没有回答这个问题.文章我应该用EF在存储库模式中实现DTO吗?也是类似的,但它不涉及DDD.

免责声明:我不打算只使用任何设计模式,因为它存在且很花哨,另一方面,我也想使用良好的设计模式和实践,因为它有助于设计整个应用程序,有助于分离至少在目前,即使是使用特定模式进行处理也不是"必要的".

一如既往,谢谢.

architecture asp.net-mvc domain-driven-design entity-framework

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