我是数据库设计的新手.对于cms的产品属性数据库设计有什么更好的选择?(请另外建议其他选项).
选项1:1表
products{
id
product_name
color
price
attribute_name1
attribute_value1
attribute_name2
attribute_value2
attribute_name3
attribute_value3
}
Run Code Online (Sandbox Code Playgroud)
选项2:3表
products{
id
product_name
color
price
}
attribute{
id
name
value
}
products_attribute{
products_id
attribute_id
}
Run Code Online (Sandbox Code Playgroud)
谢谢你,约瑟夫
我只是在Webapp中有一点惊喜,我在.jsp页面中使用EL.
我添加了一个布尔属性并抓住了我的头,因为我已经命名了一个布尔"isDynamic",所以我可以这样写:
<c:if test="${page.isDynamic}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
我发现哪个更容易阅读:
<c:if test="${page.dynamic}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是.jsp无法编译,错误如下:
javax.el.PropertyNotFoundException: Property 'isDynamic' not found on type com...
Run Code Online (Sandbox Code Playgroud)
我发现我的IDE(我花了一些时间注意它),在生成getter时,生成了一个名为的方法:
isDynamic()
Run Code Online (Sandbox Code Playgroud)
代替:
getIsDynamic()
Run Code Online (Sandbox Code Playgroud)
一旦我通过getIsDynamic()手动替换了isDynamic(),一切都运行正常.
所以我在这里有两个问题:
使用"is"启动布尔属性的名称是不是很糟糕?
不管是不是坏了,IntelliJ是否通过自动生成名为isDynamic而不是getIsDynamic的方法犯了错误?
我将举一个使用System.Data.SQLite.DLL的例子, 它是一个带有非托管代码的混合程序集:如果我执行这个:
var assembly= Assembly.LoadFrom("System.Data.SQLite.DLL")
Run Code Online (Sandbox Code Playgroud)
没有异常被抛出,但如果我这样做:
var rawAssembly = File.ReadAllBytes("System.Data.SQLite.DLL");
var assembly = Assembly.Load(rawAssembly);
Run Code Online (Sandbox Code Playgroud)
CLR抛出FileLoadException,其中包含"无法验证的代码失败的策略检查.(HRESULT异常:0x80131402)".假设我正在尝试在子AppDomain上加载此程序集,如何自定义AppDomain的安全性以允许我通过策略检查?
在我使用spring security的应用程序中,我想使用自己的spring security filter-chain来定义两个不同的区域.我的问题是:是否可以定义两个正则表达式如下:
这里的重要部分是第二条路径也应该匹配在其中的某个地方,但不是在开头,它包含/ foobar /字符串.
谢谢
请在代码中查看我的评论:
-(id)initWithCoordinate:(CLLocationCoordinate2D)c title:(NSString *)t
{
[super init];
coordinate = c;
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
NSString* formattedDate = [NSString stringWithFormat:@"%@ %@",
[dateFormatter stringFromDate:today], t];
[self setTitle:formattedDate]; //Why does the app crash when I try and release formattedDate? I have after all passed its reference to the title property?
[dateFormatter release]; //I need to release the dateformatter because I have finished using it and I have not passed on a reference to it …Run Code Online (Sandbox Code Playgroud) 我有这种格式的日期:dd.mm.yyyy
当我用它实例化一个JavaScript日期时,它给了我一个 NaN
在c#中我可以指定一个日期格式,说:这里你有我的字符串,它是这种格式,请做一个日期时间.
这在JavaScript中也可能吗?如果没有,有一个简单的方法吗?
我宁愿不使用子字符串表示日期,子字符串表示月份等,因为我的方法还必须能够使用德语,意大利语,英语等日期.
我试图用C#调用用C++/CLI编写的方法.C++/CLI代码用于更新TIMESTAMPOracle数据库中的列,给定记录ID和System::DateTimeOracle TIMESTAMP类型的.NET兼容数据类型的对象.
我调用的方法有以下原型:
bool ChangeJobUpdateDate (int jobIdIn, System::DateTime^ updateDateIn)
Run Code Online (Sandbox Code Playgroud)
我在我做的测试项目中添加了对这个DLL项目的引用; 我正在用C#编写测试.但是,当我尝试从C#单元测试项目调用此方法时,该函数似乎具有以下方法声明(通过intellisense):
bool ChangeJobUpdateDate (int jobIdIn, ValueType updateDateIn)
Run Code Online (Sandbox Code Playgroud)
我当然不熟悉C++/CLI,所以有什么我想念的吗?
我在我的大型Web应用程序中收到了很多死锁.
如何自动重新运行死锁事务?(ASP.NET MVC/SQL Server)
在这里,我想重新运行死锁事务,但我被告知摆脱死锁 - 它比试图赶上死锁要好得多.
所以我花了整整一天的时间用SQL Profiler,设置跟踪键等等.这就是我得到的.
有一张Users桌子.我有一个非常高的可用页面与以下查询(它不是唯一的查询,但它是导致麻烦的那个)
UPDATE Users
SET views = views + 1
WHERE ID IN (SELECT AuthorID FROM Articles WHERE ArticleID = @ArticleID)
Run Code Online (Sandbox Code Playgroud)
然后在所有页面中都有以下查询:
User = DB.Users.SingleOrDefault(u => u.Password == password && u.Name == username);
Run Code Online (Sandbox Code Playgroud)
这就是我从cookie中获取用户的地方.
通常会发生死锁,并且第二个Linq-to-SQL查询被选为受害者,因此它不会运行,并且我的站点用户会看到错误屏幕.
这是来自SQL事件探查器捕获的.XDL图形的信息(它只是第一个死锁,它不是唯一的.整个列表都是巨大的.):
<deadlock-list>
<deadlock victim="process824df048">
<process-list>
<process id="process824df048" taskpriority="0" logused="0" waitresource="PAGE: 7:1:13921" waittime="1830" ownerId="91418" transactionname="SELECT" lasttranstarted="2010-05-31T12:17:37.663" XDES="0x868175e0" lockMode="S" schedulerid="2" kpid="5076" status="suspended" spid="72" sbid="0" ecid="2" priority="0" trancount="0" lastbatchstarted="2010-05-31T12:17:37.663" lastbatchcompleted="2010-05-31T12:17:37.663" clientapp=".Net SqlClient Data Provider" hostname="WIN-S41KV2CLS67" hostpid="6920" …Run Code Online (Sandbox Code Playgroud) 我可以以某种方式强制派生类始终调用重写的方法基础?
public class BaseClass
{
public virtual void Update()
{
if(condition)
{
throw new Exception("..."); // Prevent derived method to be called
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在派生类中:
public override void Update()
{
base.Update(); // Forced call
// Do any work
}
Run Code Online (Sandbox Code Playgroud)
我搜索过并发现了一个使用非虚拟Update()的建议,还有一个受保护的虚拟UpdateEx().它只是感觉不是很整洁,有没有更好的方法?
我希望你能得到这个问题,我很抱歉任何不好的英语.
c# ×3
.net ×1
appdomain ×1
asp.net-mvc ×1
atomic ×1
base ×1
c++ ×1
c++-cli ×1
datetime ×1
el ×1
gcc ×1
inheritance ×1
java ×1
javascript ×1
jsp ×1
late-binding ×1
memory-leaks ×1
objective-c ×1
overriding ×1
path ×1
regex ×1
sql-server ×1
types ×1