所以我的问题相对简单,我可以创建引用dll中的类的VB6应用程序,然后在运行时将该dll替换为另一个吗?
现在我的初步猜测是......在VB6中没有机会.
所以我的想法转向VB.net互操作dll.我可以在这里做,然后从VB调用interop dll吗?
再一次,我的猜测是没有....但如果有人知道不同,我会很高兴.
我认为唯一可以实际工作的是DI in .Net,但是我只限于.net 2,或者是一个大推动的3.5,所以我不知道这是否可行.
所以对于背景....
我有一个特定网站使用的DLL,但我们不想将它发送给每个人.相反,我们想要构建一个只有接口设置的克隆dll,以便完成VB6构建.当它到达需要它的站点时,他们想要替换虚拟dll,而是放入他们的版本.
注意:我们确实在安装RegFreeCOM时使用它,因此我确实拥有可以根据需要使用的清单文件.
任何想法将不胜感激.
缺口
我在MVC4工作,想要使用Uppercase属性定义模型.我们的想法是,大写属性的存在会导致模型值在到达服务器时转换为大写.
目前我在模型中有以下代码:
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode, Uppercase=true)]
public string Account
{
get { return _account; }
set
{
if (value != null)
_account = value.ToUpper();
}
}
Run Code Online (Sandbox Code Playgroud)
但我真正喜欢的是:
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode)]
[Uppercase]
public string Account { get; set; }
Run Code Online (Sandbox Code Playgroud)
我认为我可能需要创建一个Uppercase属性,ValidationAttribute以确保在模型到达服务器时触发它.但这似乎有点不对,因为我并没有真正验证数据.有没有更好的办法?
另外,有没有办法确保属性的调用顺序?我真的想在自定义StringValidation属性触发之前将数据转换为大写,因为这会检查正则表达式模式中文本的大小写.
要为此添加一些背景知识,我希望减少添加代码以大写数据的需要.涅(nirvana)将是一个单一属性,它可以在模型绑定或验证阶段更新进入服务器的数据.然后可以在StringValidation属性中引用此属性以修改其检查中使用的RegEx值.然后我也可以在自定义TextBoxFor帮助器方法中查找此属性,这样我就可以添加text-transform: uppercase它,使其在客户端看起来正确.
有没有人有任何想法?
我当前使用Oracle托管驱动程序(v12.1.2400)作为我的Entity Framework驱动程序,并且当前ORA-12704: character set mismatch在执行过程中看到错误。
我正在使用的LINQ-> SQL代码如下:
from c in CUSTOMER.AsNoTracking()
where c.ACCOUNT.Contains("DE")
&& c.DELETED == "N"
orderby (c.FORENAME + c.SURNAME)
select new { c.ACCOUNT, c.FORENAME, c.SURNAME})
Run Code Online (Sandbox Code Playgroud)
这将创建以下SQL:
SELECT "Project1"."C2" AS "C1",
"Project1"."ACCOUNT" AS "ACCOUNT",
"Project1"."FORENAME" AS "FORENAME",
"Project1"."SURNAME" AS "SURNAME"
FROM (
SELECT( (CASE WHEN ("Extent1"."FORENAME" IS NULL) THEN N''
ELSE "Extent1"."FORENAME" END)
||(CASE WHEN ("Extent1"."SURNAME" IS NULL) THEN N''
ELSE "Extent1"."SURNAME" END)) AS "C1",
"Extent1"."ACCOUNT" AS "ACCOUNT",
"Extent1"."FORENAME" AS "FORENAME",
"Extent1"."SURNAME" AS "SURNAME",
1 AS "C2" …Run Code Online (Sandbox Code Playgroud) 我对EF很新,并且在没有运气的情况下寻找答案.
本质上,当我在EF中获得与db的连接时,我需要执行一个存储过程来设置一些内部安全性,这将限制在EF交互中返回的数据.
搜索周围,我发现以下信息应该有效:
String currentUser = "Name";
_db = new DBContext();
if (_db.Database.Connection.State != ConnectionState.Open) {
_db.Database.Connection.Open();
}
DbConnection conn = _db.Database.Connection;
DbCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "storedproc";
DbParameter user = cmd.CreateParameter();
user.DbType = DbType.String;
user.Direction = ParameterDirection.Input;
user.Value = currentUser.ToUpper();
cmd.Parameters.Add(user);
cmd.ExecuteNonQuery();
var customer = (from c in _db.Customer where c.ACCOUNT == inputAccount select c);
response = customer.First<Customer>();
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这个时,我得到"EntityConnection只能用一个封闭的DBConnection构建".当我点击LINQ查询.
有谁知道这是否可能?
我正在使用EF4.1和Oracle ODP.NET Beta进行数据库访问,它连接到10.2.0.3.0服务器.
在此先感谢您的帮助!
[编辑]
我设法通过Craig提到的方法解决这个问题,并通过以下方式完成:
这允许我执行我的安全存储过程,并强制EF保持连接打开,所以我的安全设置仍然有效.
代码如下:
OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["DBConnect"].ConnectionString); …Run Code Online (Sandbox Code Playgroud) 它是理论上可以在查找consts在class运行时?
我有一个充满类似于此的consts的静态类:
public static class Constants {
public const string Yes = "Yes";
public const string No = "No";
}
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以创建一个可以接受Constants类的UnitTest,并从中读取所有的consts.我的想法是,我可以编写一个单元测试,然后针对所有的const字符串运行.因此,如果我在类中添加更多字符串,则单元测试不必更改.
我相信这里的答案是否定的......但我认为值得一提以防万一!