标签: ef-model-first

使用Entity Framework将Boolean属性映射到Oracle

我需要先使用实体​​模型将系统连接到oracle.我有一个实体"Entity1"的模型.顾名思义,"MyBool"是一个布尔属性.

在此输入图像描述

我成功地从模型生成了sql脚本并在oracle数据库上运行它.

然后我有这个代码:

static void Main(string[] args)
{
    Model1Container context = new Model1Container();
    Entity1 entity = context.Entity1.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

此代码抛出此异常:

指定的架构无效.错误:Model1.msl(8,12):错误2019:指定的成员映射无效.类型'Model1.Entity1'中成员'MyBool'的类型'Edm.Boolean [Nullable = False,DefaultValue =]'与'OracleEFProvider.number不兼容[Nullable = False,DefaultValue =,Precision = 1,Scale = 0 ''成员'MyBool''类型'Model1.Store.Entity1'.

我读了很多帖子,很多人说要添加:

  <oracle.dataaccess.client>
    <settings>
      <add name="bool" value="edmmapping number(1,0)" />
    </settings>
  </oracle.dataaccess.client>
Run Code Online (Sandbox Code Playgroud)

在配置文件中(在我的情况下,它是一个控制台应用程序然后app.config).但这并没有改变任何事情.实际上,我可以在此参数上设置任何值,并且错误将完全相同.看起来这个参数没有被读取.

然后有人说:将Oracle.DataAccess DLL添加到项目中.我做了什么,结果是一样的.

我知道关于这个话题有很多线索,但是他们中的任何一个都帮助了我,我不知道还能做什么.请注意,我的实际应用程序模型已在Sql Server上生产.

c# sql oracle entity-framework ef-model-first

5
推荐指数
1
解决办法
3259
查看次数

EF - Navigation属性为null,即使在重新加载实体后也是如此,但在重新启动程序时仍然有效

编辑

我做了一些测试并发现,Item导航属性仅在处理上下文/创建新上下文时才有效.

        DataContext context = new DataContext();
        Order ord = context.Orders.FirstOrDefault();
        ord.OrderItem.Add(new OrderItem() { ItemId = 8, Quantity = 2, DateCreated = DateTime.Now });
        // At this point, both Order and Item navigation property of the OrderItem are null

        context.SaveChanges();
        // After saving the changes, the Order navigation property of the OrderItem is no longer null, but points to the order. However, the Item navigation property is still null.

        ord = context.Orders.FirstOrDefault();
        // After retrieving the order from the context …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework nullreferenceexception ef-model-first

5
推荐指数
1
解决办法
2538
查看次数

模型第一:如何添加Color类型的属性?

我正在使用模型优先方法创建一个新数据库,我想在类型的表中添加一列,System.Drawing.Color但我在属性列表中没有这个选项.

有没有办法比使用更多的数据类型?

c# entity-framework ef-model-first

5
推荐指数
1
解决办法
3894
查看次数

ASP.NET Identity Model First因重命名的AspNetUserRoles列而失败

像其他几个一样,我试图实现ASP.NET Identity Model First.一旦你尝试,错误,气氛,搜索和解决,一切都很好.我想.

也可以看看:

行动方案,总结如下:

  • 创建默认项目(MVC5)
  • 创建数据库
  • 更新web.config中的connectionstring
  • 运行网站,注册:表格已创建
  • 创建EF模型(edmx)
  • 导入身份表(到目前为止一切都很好)
  • 修改了xxx.Context.tt以继承IdentityDbContext
  • 生成数据库脚本(麻烦从这里开始)

我已经解决了出现的问题(直到最新一步).为了完整起见,我将描述它们.

使用默认的标识上下文

一切正常:表格创建,我可以注册和登录.然而,这不是我想要的情况:我想使用Model First方法.

使用EF连接字符串使用自定义的第一个上下文模型

修改CreatePerOwinContext,使其使用我的Model First上下文:

public void ConfigureAuth(IAppBuilder app)
{
    app.CreatePerOwinContext(CustomModelFirstDbContext.Create);
Run Code Online (Sandbox Code Playgroud)

和ApplicationUserManager一起使用Model First上下文:

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
{
    var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<CustomModelFirstDbContext>()));
Run Code Online (Sandbox Code Playgroud)

结果是:

'/'应用程序中的服务器错误.

实体类型ApplicationUser不是当前上下文的模型的一部分.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidOperationException:实体类型ApplicationUser不是当前上下文的模型的一部分.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:[InvalidOperationException:实体类型ApplicationUser不是当前上下文的模型的一部分.]

将"普通"连接字符串与自定义的Model First上下文一起使用

WebApplication1.dll中出现"System.Data.Entity.Infrastructure.UnintentionalCodeFirstException"类型的异常,但未在用户代码中处理

附加信息:如果在Code First模式下使用,则使用T4模板为Database First和Model First开发生成的代码可能无法正常工作.要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串.要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此异常的代码.

所以,我认为我需要默认的Identity上下文来使用Identity,并使用自定义的Model First上下文来处理其他所有内容.不是首选的解决方案,但可以接受.

  • 滚回一切
  • 从数据库导入标识表
  • (可选)通过Model First方法创建实体
  • 生成的数据库脚本

正常项目和快速健全性检查测试项目都与AspNetUserRoles表具有相同的问题.这是一个联结表,当在EF设计器中导入它时,一切正常.你不会看到它,因为它是一个多对多的关系,当检查AspNetRole和AspNetUser之间的关联时它看起来不错.

设计师和制图细节:

模型第一映射OK

但是,在生成sql脚本时,EF会修改密钥. …

entity-framework ef-model-first asp.net-mvc-5 asp.net-identity asp.net-identity-2

5
推荐指数
1
解决办法
3398
查看次数

使用Entity Framework Model First加密密码字段

我在VS2010的项目中使用Entity Framework Model First.

我想知道是否有办法password.edmx窗口或属性窗口中设置要加密的字段.我不想更改生成的.cs文件,因为每次修改模型时都会覆盖它.

sql-server entity-framework visual-studio-2010 ef-model-first

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

更新数据库模型(.edmx)模型优先

我使用Model First在EF中更新模型时遇到一些问题.

我已经用尽了添加迁移的建议(通常使用Code First完成).

程序包管理器控制台打印该消息

不支持从使用Database First或Model First创建的DbContext创建DbModelBuilder或编写EDMX.EDMX只能从不使用现有DbCompiledModel创建的Code First DbContext中获取.

我也试过这个建议

在EF Database First项目中更新模型

但是当我点击"运行自定义工具"时没有任何反应

有关如何更新模型以反映已添加到数据库的更改的任何建议.

entity-framework ef-model-first

4
推荐指数
1
解决办法
7585
查看次数

实体框架模型 - 第一个枚举类型MetadataType

我知道在使用模型优先开发时,您可以使用t4模板生成的部分类来添加元数据.例如

public partial class Address
{        
    public int Id { get; set; }
    public string Street1 { get; set; }
    public string Street2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在一个单独的文件中,我做:

[MetadataType(typeof(AddressMetadata))]
public partial class Address {
}

internal sealed class AddressMetadata {

    [Display(Name = "Street")]
    public string Street1 { get; set; }

    [Display(Name = "Street (cont.)")]
    public string Street2 { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-model-first

4
推荐指数
1
解决办法
3141
查看次数

首先在实体框架模型中为生成的代码添加文档

自VS 2010以来,我一直在使用Entity Framework模型.当我构建项目时,EF会生成一个包含所有实体的Model.Designer.cs文件.此设计器文件还包含添加到EDMX文件中的实体的文档.

当我在VS 2012中创建新的EF模型第一个项目时,Model.tt文件被添加到我的EDMX文件中.此T4模板为模型中的每个实体生成单个文件.遗憾的是,EDMX文件中的文档未在生成的代码中使用.

我非常喜欢记录我的模型,因此IntelliSense在使用时会显示出来.到目前为止我找到的唯一解决方法是删除Model.tt和生成的类文件,然后重新启动我的EDMX文件上的代码生成.这将恢复到我在VS 2010中使用的行为.但是,我希望每个实体都有一个单独的文件.

有没有办法(最好使用VS工具而不必修改VS附带的任何文件)在生成的单个类文件中包含EDMX文件中的文档?

编辑:为了进一步说明我的问题,这是一个简单的例子.

假设我的模型看起来像这样:简单的实体框架模型

我在Id属性的Properties窗口中突出显示了我输入文档的部分.

这是EDMX文件中实体的样子:

    <EntityType Name="Entity1">
      <Key>
        <PropertyRef Name="Id" />
      </Key>
      <Property Type="Int32" Name="Id" Nullable="false" annotation:StoreGeneratedPattern="Identity" >
        <Documentation>
          <Summary>This is documentation for the ID property.</Summary>
        </Documentation>
      </Property>
    </EntityType>
Run Code Online (Sandbox Code Playgroud)

Model.tt生成的类(Entity1.cs)如下所示:

public partial class Entity1
{
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是当我为我的模型打开代码生成时,这就是实体在Model.Designer.cs中的样子:

/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="Model1", Name="Entity1")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Entity1 : EntityObject
{
    #region Factory Method

    /// <summary>
    /// Create a new …
Run Code Online (Sandbox Code Playgroud)

code-generation entity-framework visual-studio-2012 ef-model-first

3
推荐指数
1
解决办法
4330
查看次数

实体框架模型第一:如何创建与属性的关联

我正在尝试使用Node和Edge为图形创建数据模型.如果Edge不包含任何属性,我可以简单地创建从节点到自身的多对多关联.但是我想在Edge上存储一些属性,例如距离.我试图创建另一个实体,但没有找到一种方法来声明Edge和Node之间的关系.在Model First中有可能吗?怎么样?

.net entity-framework ef-model-first

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

将实体(和相应的表)添加到EF DB优先模型

我对Entity Framework很陌生:我从数据库优先模型开始,维护一个使用EF和普通旧SQL混合创建的应用程序.

我创建了自己的新的DB-first模型,我很好.今天我老板让我添加一个新实体.缺少外键简化了方案.

我在图中创建了我的新实体(它由我刚创建的复杂实体的三个实例组成)但现在我必须创建一个增量DB脚本来创建新表.我应该这样做,为MySQL和SQL Server,但让我们开始第二.

所以现在我看到我有一个编译问题"没有实体映射Entity",如果我使用"从数据库更新模型"命令,我看不到更改送到DB的选项,但这听起来是正确的,因为单词"from".

好的,我试图从右键菜单中单击"表映射",我找到了将实体映射到表的选项.我打算在"添加表或视图"字段中键入新表名,然后......等待!我只能选择现有的表格

我理解它仅适用于单个表,因此我可以简单地"从模型生成数据库"以获取完整的SQL脚本,找到我想要的表,运行到DB并"从DB更新模型",以便EF看到表格,但是

我想了解如何使用Entity Framework创建增量脚本.这是我的问题.

c# sql-server ef-database-first ef-model-first entity-framework-6.1

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