标签: entity

如何使用Entity Framework CodeFirst使我的数据库成为种子?

数据库已成功创建(与表一样)但未加种.我花了几个小时阅读了大量文章但却未能得到它.有什么建议?

另外,是否可以在客户端中没有引用我的DatabaseContext的情况下调用初始化程序?

我已经包含了我能想到的所有相关代码.如果有任何其他方面的帮助,请告诉我.

我试过的事情:

  1. 我删除了我的连接字符串(因为它默认为sqlexpress,只是更改了名称)
  2. 我将DropCreateDatabaseIfModelChanges更改为DropCreateDatabaseAlways,仍然相同.

编辑:非常奇怪的是它曾经工作过一次,但我不知道它是如何或为什么再次破坏.我假设连接字符串,但谁知道.

DatabaseInitializer.cs

public class DatabaseInitializer : DropCreateDatabaseIfModelChanges<DatabaseContext>
{
  protected override void Seed(DatabaseContext context)
  {
    // Seeding data here
    context.SaveChanges();
  }
}
Run Code Online (Sandbox Code Playgroud)

DatabaseContext.cs

public class DatabaseContext : DbContext
{
  protected override void OnModelCreating(DbModelBuilder mb)
  {
    // Random mapping code
  }

  public DbSet<Entity1> Entities1 { get; set; }
  public DbSet<Entity2> Entities2 { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

Global.asax.cs - Application_Start()

protected void Application_Start()
{
  Database.SetInitializer<DatabaseContext>(new DatabaseInitializer());
  AreaRegistration.RegisterAllAreas();
  RegisterGlobalFilters(GlobalFilters.Filters);
  RegisterRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)

客户端web.config

<connectionStrings>
  <add name="DatabaseContext" connectionString="data source=.\SQLEXPRESS;Database=Database;Integrated Security=SSPI;" …
Run Code Online (Sandbox Code Playgroud)

frameworks entity entity-framework code-first asp.net-mvc-3

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

我应该在JPA实体中编写equals()方法吗?

我想检查实体是否在另一个实体的Collection成员(@OneToMany@ManyToMany)中:

if (entity2.getEntities1().contains(entity1)) { }
Run Code Online (Sandbox Code Playgroud)

java entity jpa equals hashcode

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

DDD和MVC:'模型'和'实体'之间的区别

我对MVC中"模型"的概念感到非常困惑.今天存在的大多数框架将模型放在Controller和数据库之间,而模型几乎就像数据库抽象层.随着Controller开始做越来越多的逻辑,'Fat Model Skinny Controller'的概念就丢失了.

在DDD中,还有域实体的概念,它具有唯一的身份.据我了解,用户是实体的一个很好的例子(例如,唯一的用户ID).实体有一个生命周期 - 它的值可以在整个动作过程中改变 - 然后它被保存或丢弃.

我上面描述的实体是我认为模型应该在MVC中的内容?我有多偏离基础?

为了使事情更加混乱,你会引入其他模式,例如Repository模式(可能会在其中放置一个Service).很清楚Repository如何与实体交互 - 它与模型有什么关系?

控制器可以有多个模型,这使得模型看起来像一个"数据库表"而不是一个独特的实体.

更新: 在这篇文章中,模型被描述为具有知识的东西,它可以是单数或对象的集合.所以听起来更像是一个实体,一个模型或多或少都是一样的.模型是一个包罗万象的术语,其中实体更具体.值对象也是一个模型.至少在MVC方面.也许???

所以,从非常粗略的角度来看,哪个更好?

没有"模特"真的......

class MyController {
    public function index() {
        $repo = new PostRepository();
        $posts = $repo->findAllByDateRange('within 30 days');
        foreach($posts as $post) {
            echo $post->Author;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者这个,它有一个模型作为DAO?

class MyController {
    public function index() {
        $model = new PostModel();
        // maybe this returns a PostRepository?
        $posts = $model->findAllByDateRange('within 30 days');
        while($posts->getNext()) {
            echo $posts->Post->Author;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这两个例子都没有做我上面描述的内容.我很丢失.有什么输入?

php model-view-controller entity domain-driven-design model

53
推荐指数
3
解决办法
2万
查看次数

模型和实体之间有什么区别

我很难理解这个词的含义是什么:

Entity,Model,DataModel,ViewModel

任何人都可以帮我理解他们吗?谢谢你们.

entity entity-framework model datamodel viewmodel

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

区分域,模型和实体与MVC

有人可以解释这3个概念以及它们之间在MVC框架方面的差异以及一个例子.对我来说,这些似乎几乎相同,似乎它们在某些文章中可互换使用,而在其他文章中则不然.

model-view-controller entity design-patterns model domain-object

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

nuget检索包元数据

从源'nuget.org'检索'bootstrap.3.3.5'的包元数据时发生错误.==========完成==========

截图

缺陷奇迹是网站nuget.org可能崩溃或问题是否是本地的.我在Windows上使用Visual Basic.当他希望下载实体框架包时,缺陷就开始了,但是他不接受来自官方网站Package的下载nuget.

是否有正在发生的事情的解释?

这意味着当我使用Visual Basic设计网站并通过asp.net Web应用程序处理数据库时,我通过Visual Basic中的附加nuget安装包,我在上一张图片中遇到错误并知道我转到页面https://www.nuget.org问安装NuGet.exe不接受下载意图是计算机中的问题还是对所有人公开.

检索包元数据时发生错误

我注意到Visual Studio 2015的NuGet包管理更新到版本3.1.60724.766(从当前的3.0.60624.657),所以我下载并安装了它.同样的错误.

固定

在Visual Studio 2015中.

工具菜单 - > NuGet包管理器 - >包管理器设置

单击"包源"

点击+号

添加以下内容:

名称:像NuGet v2

资源: https://www.nuget.org/api/v2/

取消当前的nuget.org所以它应该看起来像: 看起来像

现在你应该可以安装NuGet包了

&&

每个包都由其所有者许可给您.Microsoft不对第三方软件包负责,也不对其授予任何许可.某些程序包可能包含由附加许可证管理的依赖项.按照包源(feed)URL确定任何依赖项.

程序包管理器控制台主机版本3.0.0.0

输入'get-help NuGet'以查看所有可用的NuGet命令.

PM> get-help NuGet TOPIC about_NuGet

简短说明提供有关NuGet Package Manager命令的信息.

详细说明本主题介绍NuGet Package Manager命令.NuGet是一个集成的包管理工具,用于向.NET项目添加库和工具.

The following NuGet cmdlets are included.

    Cmdlet                  Description
    ------------------      ----------------------------------------------
    Find-Package            Get the set of packages available from the package source, 
                            based on the package Id/keyword. This is a new …
Run Code Online (Sandbox Code Playgroud)

entity metadata package nuget

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

在JPA中禁用缓存(eclipselink)

我想使用JPA(eclipselink)从我的数据库中获取数据.数据库由许多其他来源更改,因此我想回到我执行的每个查找的数据库.我已经阅读了许多关于禁用缓存的帖子,但这似乎没有用.有任何想法吗?

我正在尝试执行以下代码:

        EntityManagerFactory entityManagerFactory =  Persistence.createEntityManagerFactory("default");
        EntityManager em = entityManagerFactory.createEntityManager();

        MyLocation one = em.createNamedQuery("MyLocation.findMyLoc").getResultList().get(0);

        MyLocation two = em.createNamedQuery("MyLocation.findMyLoc").getResultList().get(0);    

        System.out.println(one==two);
Run Code Online (Sandbox Code Playgroud)

一个==两个是真的,而我希望它是假的.

我尝试将以下每个/所有内容添加到我的persistence.xml中

<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.cache.size.default" value="0"/>
<property name="eclipselink.cache.type.default" value="None"/>
Run Code Online (Sandbox Code Playgroud)

我也尝试将@Cache注释添加到实体本身:

@Cache(
  type=CacheType.NONE, // Cache nothing
  expiry=0,
  alwaysRefresh=true
)
Run Code Online (Sandbox Code Playgroud)

我误会了什么吗?

java entity jpa eclipselink

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

JPA,如何使用相同的类(实体)来映射不同的表?

我有两张桌子:TaTb.它们具有完全相同的表结构但不同的表名.

我尝试创建一个实体类来映射表结构.我的一些常见应用程序模块将使用此实体类来动态查询和更新任何一个TaTb基于参数.可以在JPA中完成吗?如何编写程序以在运行时将实体类动态映射到不同的表?

java entity jpa

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

JPA认为我正在删除一个分离的对象

我有一个DAO,我曾经使用JPA加载和保存我的域对象.我终于设法使交易工作正常,现在我又遇到了另一个问题.

在我的测试用例中,我调用我的DAO来加载具有给定id的域对象,检查它是否已加载,然后调用相同的DAO来删除刚刚加载的对象.当我这样做时,我得到以下内容:

java.lang.IllegalArgumentException: Removing a detached instance mil.navy.ndms.conops.common.model.impl.jpa.Group#10
 at org.hibernate.ejb.event.EJB3DeleteEventListener.performDetachedEntityDeletionCheck(EJB3DeleteEventListener.java:45)
 at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:108)
 at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)
 at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:794)
 at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:772)
 at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:253)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
 at java.lang.reflect.Method.invoke(Method.java:600)
 at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:180)
 at $Proxy27.remove(Unknown Source)
 at mil.navy.ndms.conops.common.dao.impl.jpa.GroupDao.delete(GroupDao.java:499)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
 at java.lang.reflect.Method.invoke(Method.java:600)
 at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
 at $Proxy28.delete(Unknown Source)
 at mil.navy.ndms.conops.common.dao.impl.jpa.GroupDaoTest.testGroupDaoSave(GroupDaoTest.java:89)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
 at java.lang.reflect.Method.invoke(Method.java:600)
 at junit.framework.TestCase.runTest(TestCase.java:164)
 at junit.framework.TestCase.runBare(TestCase.java:130)
 at junit.framework.TestResult$1.protect(TestResult.java:106)
 at junit.framework.TestResult.runProtected(TestResult.java:124)
 at …
Run Code Online (Sandbox Code Playgroud)

java spring entity jpa

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

实体框架和多线程

我们在设计多线程实体框架驱动的应用程序时遇到一些麻烦,并希望得到一些指导.我们在不同的线程上创建实体,将实体添加到集合中,然后将数据绑定到各种wpf控件.ObjectContext类不是线程安全的,所以管理它我们基本上有两个解决方案:

解决方案1具有单个上下文并小心使用锁定以确保没有2个线程同时访问它.这实现起来相对简单,但要求上下文在应用程序期间保持活动状态.像这样打开一个上下文实例是不是一个坏主意?

解决方案2是按需创建上下文对象,然后立即分离对象,然后将它们保存在我们自己的集合中,然后重新附加它们以进行任何更新.但是这有一些严重的问题,因为当分离对象时,它们会丢失对导航属性对象的引用.还有一个问题是,2个线程仍然可以尝试访问单个对象,并且都尝试将()附加到上下文.此外,每次我们想要访问实体导航属性时,我们都需要提供新的上下文.

问:两种解决方案中的任何一种都有效,如果不是,您如何建议我们解决这个问题?

.net multithreading frameworks entity

41
推荐指数
2
解决办法
5万
查看次数