我有几个类需要从一个包含Id的公共基类派生.暂时忽略除了其中一个之外的其他所有内容,让我们说:
public class MyBase {
[Key]
public int Id { get; set; }
}
public class MyName : MyBase {
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的上下文(DataContext)看起来像这样:
public DbSet<MyName>MyNames { get; set; }
// to avoid having EF make a MyBases table and instead map
// MyBase.Id into MyNames and my other derived classes I do this ...
protected override void OnModelCreating((DbModelBuilder modelBuilder) {
modelBuilder.Entity<MyBase>()
.Property(c => c.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<MyName>()
.Map(m => {
m.MapInheritedProperties();
m.ToTable("MyNames");
});
}
Run Code Online (Sandbox Code Playgroud)
生成的数据库,当我启用迁移,添加迁移初始化和更新数据库时,我得不到名为MyBases的表,而是在MyNames中获取Id列 …
我想使用反射来获取提供的命名空间和类型的程序集.我更愿意将它们作为字符串提供.需要注意的是空间和类型在装配中定义这可能是重要的其他比正在执行这段代码的人,但执行代码程序集确实有一个参考给其他组件.
我的问题是为什么静态GetType(string)方法返回null,而如果我硬编码命名空间和类并使用if语句中的typeof(),我得到所需的结果?
这是代码:
string fullClassName = "MyNameSpace.MyClass";
Type t = Type.GetType( fullClassName ); // this returns null!
if ( t == null )
{
t = typeof(MyNameSpace.MyClass); // this returns a valid type!
}
Run Code Online (Sandbox Code Playgroud)
感谢您的任何见解......
这是我的代码:
DECLARE @d1 DATETIME
DECLARE @d2 DATETIME
SET @d1 = '2015-01-01 00:00:00'
SET @d2 = '2015-12-31 23:59:59.999'
SELECT
CASE
WHEN ('2016-01-01 00:00:00' BETWEEN @d1 AND @d2)
THEN 'is between'
ELSE 'not between'
END AS BetweenOrNotBetween
Run Code Online (Sandbox Code Playgroud)
我在这里提供的日期比函数的范围晚 1毫秒BETWEEN,但在我的SQL 2008服务器实例上,结果是'介于'之间而不是预期的'不介于'之间 ...
这是一个错误,还是由于某些我没有看到的原因而在设计中是必要的妥协?
是的,只要我在2016-01-01午夜之后加上一小段时间,我就会得到预期的'不在'之间的结果.
// goal: update Address record identified by "id", with new data in "colVal"
string cstr = ConnectionApi.GetSqlConnectionString("SwDb"); // get connection str
using (DataContext db = new DataContext(cstr)) {
Address addr = (from a in db.GetTable<Address>()
where a.Id == id
select a).Single<Address>();
addr.AddressLine1 = colValue.Trim();
db.SubmitChanges(); // this seems to have no effect!!!
}
Run Code Online (Sandbox Code Playgroud)
在调试器中,addr具有db表中的所有当前值,并且我可以在调用db.SubmitChanges()之前验证AddressLine1是否已更改... SQL Profiler在SubmitChanges行执行时仅显示"重置连接".任何人都知道为什么这不起作用?谢谢!
所以,这是我第三次重新安装Aptana Studio 3(这次是3.4.2).我正在开发一个带有.php,.js,.css,.html和其他一些文件类型的Web项目.经过几周的成功工作,Aptana将继续创业.它将加载我的项目和文件,但然后我得到的只是一个沙滩球,除了移动主窗口,我不能做任何事情(菜单点击,文件关闭,虚无).无论我重启多少次,这种状态都会持续存在.唯一的解决方案是将Applications/AptanaStudio发送到垃圾箱并下载新的副本.然后,它不记得我的旧项目,并开始正常.可能只是一个巧合,但现在发生了两次,我正在编辑.js文件.其他人有这个问题吗?
sql ×3
c# ×2
aptana ×1
between ×1
code-first ×1
datetime ×1
linq ×1
linq-to-sql ×1
macos ×1
reflection ×1
typeof ×1