我正在一个项目中使用LINQ to SQL类,数据库设计仍处于不断变化之中.
是否有一种简单的方法可以将类与模式同步,或者如果表设计发生更改,是否需要手动更新类?
如何从C#应用程序创建新数据库?
我假设一旦我创建它,我可以简单地生成连接字符串并连接到它,并发出所有CREATE TABLE语句.
下面的代码无法正确运行并抛出InvalidOperationExcepiton.
public void Foo()
{
DataContext context = new DataContext();
LinqEntity item = new LinqEntity(){ Id = 1, Name = "John", Surname = "Doe"} ;
context.LinqEntities.Attach(item, true);
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一些扩展来模仿地图并减少Lisp中的函数.
public delegate R ReduceFunction<T,R>(T t, R previous);
public delegate void TransformFunction<T>(T t, params object[] args);
public static R Reduce<T,R>(this List<T> list, ReduceFunction<T,R> r, R initial)
{
var aggregate = initial;
foreach(var t in list)
aggregate = r(t,aggregate);
return aggregate;
}
public static void Transform<T>(this List<T> list, TransformFunction<T> f, params object [] args)
{
foreach(var t in list)
f(t,args);
}
Run Code Online (Sandbox Code Playgroud)
转换功能将减少如下:
foreach(var t in list)
if(conditions && moreconditions)
//do work etc
Run Code Online (Sandbox Code Playgroud)
这有意义吗?会更好吗?
处理默认函数参数的唯一方法是通过函数重载吗?
例如,在PHP中我可以这样做:
function foo($x, $y=0)
{
}
Run Code Online (Sandbox Code Playgroud)
在C#中处理它的最佳方法是这样吗?
void foo(int x)
{
foo(x, 0);
}
void foo(int x, int y)
{
}
Run Code Online (Sandbox Code Playgroud)
编辑
将C#示例变成了实际的C#(感谢Blair Conrad)
我想每个人都看过如下代码:
public void Server2ClientEnumConvert( ServerEnum server)
{
switch(server)
{
case ServerEnum.One:
return ClientEnum.ABC
//And so on.
Run Code Online (Sandbox Code Playgroud)
而不是这种不好,我们可以这样做:
public enum ServerEnum
{
[Enum2Enum(ClientEnum.ABC)]
One,
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用反射来翻录ServerEnum并从枚举声明本身获取转换映射.
我在这里遇到的问题是在Enum2Enum属性的声明中.
这有效,但用Enum e替换对象o则不行.我不希望能够将对象传递给构造函数,只传递给其他枚举.
public class EnumToEnumAttribute : Attribute
{
public EnumToEnumAttribute(object o){}
}
Run Code Online (Sandbox Code Playgroud)
这无法编译.
public class EnumToEnumAttribute : Attribute
{
public EnumToEnumAttribute(Enum e){}
}
Run Code Online (Sandbox Code Playgroud)
是否有编译错误的原因?我还能如何传递地图所需的信息:
EnumtoEnumAttribute(Type dest, string enumString)
Run Code Online (Sandbox Code Playgroud)
这似乎太冗长,但如果这是唯一的方法,那么我想我会用它.
我有一个MS-Access应用程序(1/10 MS-Acccess,9/10ths MS-SQL),需要显示一些资产的照片及其规格.目前,图像作为OLE对象存储在MS-Access表中(并由用户复制粘贴到字段中).
出于各种原因,我想将原始.jpgs存储在网络驱动器上的文件夹中,并从应用程序部分引用它们.我曾考虑过移入MS-SQL的图像数据类型(及其替换的varbinary),但我认为我的用户群将更容易掌握网络文件夹的概念.
如何让MS Access显示.jpg的内容?
你如何在Java中找到内存泄漏(例如,使用JHat)?我试图在JHat中加载堆转储以获得基本外观.但是,我不明白我应该如何能够找到根引用(ref)或其所谓的.基本上,我可以说有几百兆字节的哈希表条目([java.util.HashMap $ Entry或类似的东西),但地图遍布整个地方...有没有办法搜索大地图,或者可能找到大型对象树的一般根源?
[编辑]好的,到目前为止我已经阅读了答案,但我们只是说我是一个廉价的混蛋(这意味着我对学习如何使用JHat更感兴趣而不是支付JProfiler).此外,JHat始终可用,因为它是JDK的一部分.除非当然没有办法与JHat合作但是蛮力,但我无法相信可能是这样.
此外,我认为我不能实际修改(添加所有地图大小的记录)并运行它足够长的时间让我注意到泄漏.
我有一个情况,我有一个主窗体,弹出一个高级配置表单,只有六个匹配的复选框和组合框,以选择一些高级选项(复选框启用/禁用,组合选择一个媒体如果启用).
如果我只是将检查和组合框的各个设置传递给对话框的构造函数,这显然是十几个参数,这看起来有点过分.
我的另一个显而易见的选择是,因为在主窗体中这些设置存储在一个大的IDictionary中,其中包含所有其他主要的表单设置,我可以将这个字典传入并随后用更新的值获取它,但我的理解是这个不会真的是非常好的编码练习.
我错过了一个很好的方法来做到这一点既高效又良好的编码实践?
(这个特殊的代码在C#中,虽然我觉得一般的解决方案也适用于其他语言)
c# ×6
.net ×2
.net-3.5 ×1
ajax ×1
asp.net ×1
attributes ×1
enums ×1
image ×1
java ×1
jhat ×1
linq ×1
linq-to-sql ×1
memory ×1
memory-leaks ×1
ms-access ×1
overloading ×1
reflection ×1
sql-server ×1