标签: entity

我可以在没有模型绑定的情况下检查modelstate吗?

我正熟悉实体框架,我想知道是否有办法检查模型状态而不发生模型绑定.

假设我主要是从代码创建用户,在更新之前,有没有办法让我检查以确保它是否有效根据我预定义的数据注释?

    public ActionResult Index()
    {
        User u = new User();
        u.Username = "test";
        u.Password = "test";
        u.Email = "test";

        DefaultContext db = new DefaultContext();            

        if (ModelState.IsValid)
        {
            db.Users.Add(u);
            db.SaveChanges();
            Response.Write(u.Id);
        }
        else
            // model is not valid

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,因为没有绑定发生.或许我对这个过程很困惑.

谢谢.

c# asp.net-mvc entity entity-framework data-annotations

15
推荐指数
2
解决办法
4867
查看次数

Symfony2 - 在Entity中访问存储库功能

假设我的数据库中有两个表:兔子和胡萝卜.兔子可以有0或多个胡萝卜,胡萝卜属于一只兔子.这是这两个表之间的1,n关系.

我有两个实体,兔子和胡萝卜.

我在模板中传递了一系列兔子,我想从每只兔子那里得到特定的胡萝卜,然后展示它们:假设我想要从每个$中获得10个更贵的胡萝卜(胡萝卜价格将存储在胡萝卜表中)兔子在阵列中.

就像是 :

{% for rabbit in rabbits %}
    {% for carrot in rabbit.getMoreExpensiveCarrots %}

        {{ carrot.price }}

    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我正在使用存储库类,但如果我在Rabbit存储库类中创建函数getMoreExpensiveCarrots($ rabbit),我将无法从类似的实体类访问该函数,这就是我想要的:

$ rabbit-> getMoreExpensiveCarrots()

我认为这样做的一种方法是在Rabbit实体中创建一个getMoreExpensiveCarrots():

// Entity rabbit
class Rabbit
{
    public function getMoreExpensiveCarrots()
    {
        // Access repository functions like getMoreExpensiveCarrots( $rabbit )
        // But how can I do such thing ? Isn't that bad practise ?
        return $carrots;
    }         
}
Run Code Online (Sandbox Code Playgroud)

我以为我也可以这样做:

    // Entity rabbit
    class Rabbit
    {
        public function getMoreExpensiveCarrots()
        {
            $this->getCarrots(); …
Run Code Online (Sandbox Code Playgroud)

entity symfony

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

在HIbernate 4中有效地通过id加载多个实体

所以我通过id得到了一个特定实体的实例

for(Integer songId:songGroup.getSongIds()) {
   session = HibernateUtil.getSession();
   Song song = (Song) session.get(Song.class,id);
   processSong(song);
}
Run Code Online (Sandbox Code Playgroud)

这会为每个id生成一个sql查询,所以我觉得我应该在一个中执行此操作,但是除了运行查询之外,我找不到在一次调用中获取多个实体的方法.所以我写了一个查询

return (List) session.createCriteria(Song.class)
       .add(Restrictions.in("id",ids)).list();
Run Code Online (Sandbox Code Playgroud)

但是,如果我启用第二级缓存并不意味着我的旧方法将能够从二级缓存返回对象(如果之前已经请求过),但我的查询将始终转到数据库.

这样做的正确方法是什么?

java entity hibernate identifier query-performance

15
推荐指数
1
解决办法
8119
查看次数

DDD,实体框架,聚合实体行为(Person.AddEmail等)

这是一个我正在遇到的问题的一个简单例子,它没有与这里提出的一些想法和其他有关DDD的地方相关联.

假设我有一个ASP.NET MVC 3站点,可以创建/操作一个人.控制器访问应用程序服务层(PersonService),后者又使用域实体(EF 4 POCO)和PersonRepository进行更改并保留它们.为简单起见,我在这里省略了所有接口.在这种情况下,Person是根,为简单起见,只有电子邮件地址(也假设电子邮件不是不可变的,可以更新).

选项1:尽量坚持[我的理解] DDD的基础知识,其中与实体直接相关的行为是作为实体的一部分实现的(Person实现AddEmail,ChangeEmail等).除了Add*方法之外,唯一的问题是Person需要知道上下文或实体框架部分(这将消除任何持久性无知)或需要使用"服务"或存储库来标记修改后的电子邮件.

// Person Service
public class PersonService {
    // constructor injection to get unit of work and person repository...
    // ...methods to add/update a person
    public EmailAddress AddEmailAddress(int personId, EmailAddress email)
    {   
        Person p = personRepository.Find(p => p.Id == personId).First();
        p.AddEmail(email);   
        uow.SaveChanges();
        return email; 
    }

    public EmailAddress ChangeEmailAddress(EmailAddress email)
    {
        Person p = personRepository.Find(p => p.Id == personId).First();
        p.ChangeEmail(email);   
        // change state of email object here so it's updated in the next line??? …
Run Code Online (Sandbox Code Playgroud)

entity domain-driven-design entity-framework aggregate anemic-domain-model

14
推荐指数
1
解决办法
2448
查看次数

什么用,托管bean(支持bean)或实体bean?

我看到很多将bean标记为实体bean(@Entity)和命名bean(CDI)的示例,以避免创建2个类(托管bean和实体bean)以及使用Bean Validation以便可以执行验证在客户端和服务器上.

那么我是否应该使用单个类,是否存在任何问题,或者我是否应该使用托管bean中的数据创建托管bean或服务层创建实体bean?

entity bean-validation jsf-2 managed-bean

14
推荐指数
1
解决办法
6192
查看次数

如何使用JPA和Hibernate加入两个不相关的实体

我有两个表 - 一个包含地址,另一个包含照片.它们之间唯一的共同点是PersonID.这些映射到两个POJO类地址和照片.我可以通过创建条件并在字段上添加限制来获取这些表中的详细信息.我们应该如何在两个表上编写连接.是否可以将结果作为两个对象-Address和Photo.

我想做一个左连接,这样我就可以获得没有照片的人的记录.我已经读过,这只能使用hql,但这可以使用标准来完成吗?

java entity hibernate jpa join

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

检查约束实体框架

在EF中我可以添加一个检查约束,这样如果我的CustomerNotes实体有一个布尔"FollowUpRequired"属性,我强制用户在"FollowUpDate"属性中输入一个有效的未来日期?

entity entity-framework

14
推荐指数
2
解决办法
8500
查看次数

如何使用LINQ从实体加载最后一条记录?

我想从最后一条记录中获取名为"Gram"的字段的值,并将其值放入变量中,而不使用任何条件.

首先我试过了

int value = int.Parse(Entity.TblGold.LastOrDefault().Gram.ToString());
Run Code Online (Sandbox Code Playgroud)

我试过第二次

int value = int.Parse(Entity.TblGold.Select(p => p.Gram).Last().ToString());
Run Code Online (Sandbox Code Playgroud)

我刚收到这个例外:

LINQ to Entities does not recognize the method 'DataModel.TblGold LastOrDefault[TblGold](System.Linq.IQueryable``1[DataModel.TblGold])' method, and this method cannot be translated into a store expression.

c# linq asp.net entity datamodel

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

SQL JPA - 多列作为主键

如果我想要一个严格的列来组成一个ID.

SQL示例:

CONSTRAINT [PK_NAME] PRIMARY KEY ([Column1],[Column2],[Column3])
Run Code Online (Sandbox Code Playgroud)

我怎么能用Jpa Entity类做到这一点?通过columndefinition?

只需将id字段设置为:

value = Column1 + Column2 + Column3 // aint working.
Run Code Online (Sandbox Code Playgroud)

java sql entity jpa spring-boot

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

Odata - 嵌套$ select和$ expand

http://services.odata.org/V4/Northwind/Northwind.svc/

我试图获得所有Customers,他们Orders和相应的Order_Details,并使用嵌套$expand的.要查询我正在使用以下链接的数据:http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$expand=Orders($expand=Order_Details)

现在我正在尝试使用限制数据$select.问题是我找不到$select用于中间表的正确语法- Orders.我可以将它应用到顶部表格 - Customers并将其应用于底部表格- Order_Details如下所示:

http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$select=CustomerID&$expand=Orders($expand=Order_Details($select=UnitPrice))

在我的情况下,是否可以使用$ select表示中间的表格Orders

expand select entity odata

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