我的申请中有一个要求。我的表不会事先定义。
例如,如果用户创建的名称的表单Student,并增加了它的属性,如姓名,不滚,主题类等,然后在运行时,应该有通过名称创建一个表student的列name,roll no,subject,class等以及其相关类及其 Hibernate 映射文件。
有没有办法这样做?
提前致谢,
Rima Desai
尝试使用EF4向VS2010中的动态数据网站添加一些不同的过滤器(除了ForeignKey过滤器).我可以添加新的过滤器模板,但是如何指定为模型中的每个属性显示哪个模板?
谢谢
我有一个看起来像这样的全局变量:
var socket_x = 'whatever';
Run Code Online (Sandbox Code Playgroud)
问题是“x”将取决于用户会话。假设用户 ID 为 123,我希望全局变量为:
var socket_123 = 'whatever';
Run Code Online (Sandbox Code Playgroud)
这样,每个浏览的用户都会将自己的套接字设置为全局变量。
我只是不知道该怎么做。
我知道我可以使用:
eval('socket_' + userId) = 'whatever'; //not recommended
window['socket_' + userId] = 'whatever'; //best
Run Code Online (Sandbox Code Playgroud)
但是如果我想像这样声明全局变量,它将不起作用:
var eval('socket_' + userId) = 'whatever';
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?
谢谢你。
PS:我知道不应该使用“eval”,但这只是为了说明。
编辑:
谢谢你们所有人的回答,但它不起作用。
到目前为止,这是我的全局变量(它可以正常工作,但我不想将 php 与 javascript 混合使用):
var socket_<?php echo $_SESSION['user_id'];?> = io.connect( 'http://pubsub.pubnub.com', pubnub_setup_private );
Run Code Online (Sandbox Code Playgroud)
如果我这样做,就像你建议的那样:
window['socket_'+actual_user_id]= io.connect( 'http://pubsub.pubnub.com', pubnub_setup_private );
Run Code Online (Sandbox Code Playgroud)
它只是行不通。
如果我将其作为局部变量来执行,它会起作用:
eval('socket_'+actual_user_id).emit( 'all', msg_all );
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,它不会:
window['socket_'+actual_user_id].emit( 'all', msg_all );
Run Code Online (Sandbox Code Playgroud)
所以我在这里遇到了两个问题:
我有一个用实体框架映射的数据库,
我需要实现一个通用方法来根据我传递的参数获取项目列表:
getGenericList("product"); // returns the list of products
getGenericList("customer"); // returns the list of customers
Run Code Online (Sandbox Code Playgroud)
我需要动态获取dbSet. 我的方法是这样实现的:
public static List<object> getGenericList(string entityType)
{
List<object> myDynamicList = new List<object>();
using (cduContext db = new cduContext())
{
DbSet dbSet = db.getDBSet(entityType);
var myDynamicList = dbSet.Select(p => p).ToList();
}
return new List<object>();
}
Run Code Online (Sandbox Code Playgroud)
我dbSets首先由 EF 代码自动生成:
public DbSet<Product> Products { get; set; }
public DbSet<Custommer> Custommers { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的getDBSet(entityType)方法是在上下文中实现的,如下所示:
public DbSet<T> getDBSet<T>(string entityName) where …Run Code Online (Sandbox Code Playgroud) linq-to-entities dynamic-data auto-generate entity-framework-5
以下是我的架构详细信息:
schema_3 中的一些过程从 schema_1 和 schema_2 访问资源(表、视图、sp)。
schema_3 中的所有过程在两个数据库上都是相同的。如何从 schema_3 访问两个数据库的 schema_1。
现在我可以在程序中对 DB_A 进行硬编码,但是当我将代码移动到客户端计算机时,它会产生一个问题,因为 DB_A 可能不相同(原因之一是客户端很吝啬,并且 QA、Dev 和 Prod 在同一台计算机上)。
第二个选项是获取 DB_A 名称作为参数,但这将使所有 schema_3 SP 动态化(因为我没有任何方法来访问 @DBName.schema_name.ResourceName 等内容)。
第三个选项是创建链接服务器,由于与第一个选项相同的原因,这又不能解决我的问题。
知道如何继续,我不希望我的程序是动态的,因为其中 80% 是直接的。
编辑开始:
因此,我可以重申一下,因为我有多个数据库,其中一个数据库具有需要共享的资源(表/视图/架构),然后具有其他数据库(一个或多个),这些数据库具有存储过程,这些存储过程对来自共享数据库和自身的数据进行计算数据库。
共享数据库名称不会在所有环境中保持不变,我想更改它们(特定于环境)。我提出了一个解决方案,我将为所有共享资源创建同义词,并且所有程序都将使用它们,这样它们都引用第一个数据库中的共享资源。
对于每次安装,我都需要修改同义词定义以反映正确的共享数据库名称。数据库名称是否有同义词,这样我需要处理的同义词就会少得多。
我正在尝试在我的动态数据实体站点中显示计算字段。我已经从现有数据库生成了我的 EDMX 文件,并使用部分类在单独的文件中添加了自定义。我希望计算的字段显示在显示和列表屏幕上。
我在网上看到了大量的例子,据说人们可以使用它;然而,他们中的大多数都专注于代码优先方法而不是数据库优先。我没有 Code-First 选项,因为数据库已经完成。
我尝试了各种数据注释,包括:
[ScaffoldColumn(true)]
[NotMapped]
[ReadOnly]
[Display(AutoGenerateField=true)]
Run Code Online (Sandbox Code Playgroud)
我还尝试按照以下格式关注 MetadataType:
[MetadataType(typeof(ProductMetadata))]
public partial class Product
{
[ScaffoldColumn(true)]
[NotMapped]
public decimal CostPerUnit
{
get
{
return TotalCost / (decimal)TotalUnits;
}
}
}
public class ProductMetadata
{
[ReadOnly(true)]
[Display(Name = "[Cost Per Page]", AutoGenerateField = true, AutoGenerateFilter = false)]
[UIHint("Number")]
public object CostPerUnit { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
上面的代码对我来说编译得很好。显示和列表形成了 Product 表中的两个显示列,我的其他注释(未列出)显示得很好。没有显示任何计算字段。没有错误消息。
我做错了什么,还是以错误的方式解决这个问题?EntityFramework 5.0 和动态数据无法实现我的目标吗?如果是后者,EF 6.0 有我需要的吗?
编辑 2014-07-11:
我已经切换到实体框架版本 6 并尝试了代码优先的方法。我仍然无法在代码隐藏中创建一个会显示在动态数据站点中的计算字段。
有什么方法可以在动态数据网站中包含实体对象的代码隐藏属性?我 100% 可以重写和覆盖框架中的其他类来实现这个目标(事实上,我已经尝试过,但收效甚微)。
例如,我有一些集合的 observable 指示对象的状态(我通过 REST API 定期获取它)。
class User
{
int Id { get; }
string Name { get; }
string Status { get; }
}
IObservable<User> source;
Run Code Online (Sandbox Code Playgroud)
我想创建一个DynamicCache对象并在每次source给我一个新结果时更新它。所以我写道:
var models = new SourceCache<User,int>(user => user.Id);
models.Connect()
.Transform(u => new UserViewModel() {...})
...
.Bind(out viewModels)
.Subscribe();
source.Subscribe(ul => models.EditDiff(ul, (a, b) => a.Status == b.Status));
Run Code Online (Sandbox Code Playgroud)
但是现在每次用户更改其状态时,.Transform(...)方法都会创建 的新实例UserViewModel,这不是所需的行为。
当具有相同 Id 的源项更改而不是每次都创建一个新项时,我能否以某种方式确定更新现有 ViewModel 属性(在派生集合中)的规则?
是否存在动态改变浏览器中运行的javascript的工具?例如,在运行时更改javascript变量的值.
我写了一些代码:
public static object func()
{
return new { a = 1, b = 2 };
}
Console.WriteLine((func() as dynamic).a); //returns '1'.
Run Code Online (Sandbox Code Playgroud)
如果我能做到:func() as dynamic那么动态应该是某种引用类型/类.
我寻找它的类型但找不到任何(通过反射器).
它的类型是什么?(参考类型)?
(编辑:以下是针对以Windows为目标的Delphi应用程序中的Are对象引用计数,如果是,它的目的是什么?以及Delphi中的动态数组和内存管理).
我有两个类(TGenericHoldingSummary,TGenericHoldingResultSet)和一个记录(TGenericHoldingResult).
TGenericHoldingSummary包含一个TGenericHoldingResultSet,nil如果需要,可以从数据库设置并延迟加载.TGenericHoldingResultSet包含的动态数组TGenericHoldingResult记录.在下面,错误是在TGenericHoldingResultSet构造函数中的赋值.
TGenericHoldingResult = record
code : Integer;
level : String;
msg : String;
end;
TGenericHoldingResultSet = class(TObject)
public
// Lifecycle
constructor Create(parent : TGenericHoldingSummary; resArr : Array of TGenericHoldingResult);
destructor Destroy;
// Accessors
function ResultCount() : Integer;
function Result(i : Integer) : TGenericHoldingResult;
private
// Variables
summary : TGenericHoldingSummary;
resultArray : Array of …Run Code Online (Sandbox Code Playgroud) dynamic-data ×10
c# ×3
javascript ×2
.net ×1
.net-4.0 ×1
arrays ×1
asp.net ×1
delphi ×1
hibernate ×1
java ×1
reactive ×1
reactiveui ×1
sql ×1
sql-server ×1
synonym ×1