在实体框架数据库中存储方法

Posted

技术标签:

【中文标题】在实体框架数据库中存储方法【英文标题】:Storing Methods in Entity Framework Database 【发布时间】:2012-08-22 19:38:38 【问题描述】:

是否有一种简单的方法可以将方法存储在 EF 表中,类似于继承?

例如,我有一个代表门户页面上的应用程序的表格(有点像您的基本 iphone 或 android 主屏幕)。我想通过每个应用显示一个数字,显示该应用有多少通知。但是,获取通知数量的方法因应用而异。

我目前的解决方案是只拥有一个包含我需要的所有方法的类,然后根据应用名称进行切换。有没有更好的办法?

【问题讨论】:

您想将代码存储在数据库字段中???? 我真的不明白数据库与它有什么关系,但在那些场景中你应该真正创建一个统一的接口。然后每个应用都应该实现该接口,可能通过一个适配器。 @CodingGorilla 不一定。 This question 看起来我可以用部分类来做到这一点。只是想知道选项是什么。 @AlbinSunnanbo 我还有一个用户表,我需要与它建立多对多关系以确定应用程序的权限。此外,我希望能够通过 UI 添加新应用。 【参考方案1】:

假设您获取通知的方法是无参数的,您可以将方法名称存储在该表的列中并通过反射调用它。对于此示例,我们将调用列/属性 NotificationMethodName

//this would go in your entity class 
public int GetNotificationCount()
    
   MethodInfo mi = typeof(HelperClass).GetMethod(this.NotificationMethodName);    
   return (int)mi.Invoke(this, null); 


public class HelperClass

  //your class that currently has all the methods to get notification count

【讨论】:

以上是关于在实体框架数据库中存储方法的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架核心生成和访问存储过程

实体框架中的日期时间文化问题

多对多实体框架和存储库模式插入/更新

实体框架支持来自数据库优先方法的默认约束

在实体框架中使用存储过程

使用实体框架和存储过程进行并发检查