我正在寻找以下场景的设计建议:
我有一个代码优先的EF5 MVC应用程序.我正在构建一个全文搜索功能,它将包含来自许多表的多个加权列.由于我无法使用这些表中的索引创建视图(其中一些包含文本/二进制列),因此我创建了一个存储过程,该过程将输出我的对象的ID(例如.PersonID
)以及与该对象关联的排名.搜索条件.
我目前的方法是创建一个辅助类来执行全文搜索,该搜索调用存储过程并根据返回的ID加载来自上下文的所有对象.
我的问题是:
UPDATE
将我的详细实现从问题编辑转移到自己的答案中,更符合经常推荐的内容@ meta.stackexchange.com
我遇到以下代码时遇到问题:
@Html.RenderPartial("_SortDisplayPage", new ViewDataDictionary { { "bottomClass", "pagingBottom" } })
Run Code Online (Sandbox Code Playgroud)
它给出了错误:
Cannot implicitly convert type void to object
Run Code Online (Sandbox Code Playgroud)
我觉得它很小但却找不到......
我在项目的查询缓存上遇到了很多麻烦:我运行的是Percona的MySQL版本,在我的本地开发机器上和生产服务器上运行相同的版本.现在,启用查询缓存可以在我的本地计算机上获得出色的结果:几乎所有应该缓存的查询都是有效的.
现在,生产服务器上没有缓存完全相同的查询.一切都完全一样; mysql变量,数据库内容,代码库,登录用户,但是在生产过程中,只有少数查询被缓存,最重要的查询都被跳过.我无法弄清楚为什么:-)
因此,寻找解决方案,我正在使用以下查询,用于从主题表中选择最新的3个主题:(这是最"重"的查询,是我绝对想要缓存的那个!)
SELECT `topic`.* FROM `topics` AS `topic`
LEFT OUTER JOIN `topics` AS `topic_helper`
ON (`topic`.`id` = `topic_helper`.`id`
AND `topic_helper`.`created_on` < `topic`.`created_on`)
GROUP BY `topic`.`id` HAVING COUNT(*) < 3
ORDER BY `topic`.`created_on` DESC;
Run Code Online (Sandbox Code Playgroud)
所以,首先,SHOW VARIABLES LIKE '%query_cache%
给我相同的结果,无论是本地还是生产:
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| have_query_cache | YES |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 10485760 |
| query_cache_strip_comments | OFF |
| query_cache_type | ON |
| query_cache_wlock_invalidate …
Run Code Online (Sandbox Code Playgroud) 我目前正在使用PHP/MySQL开发调查创建/管理Web应用程序.我已经经历了数据库表的几个修订,我再次发现我可能需要重新考虑某种类型的答案的存储.
现在,我有一个看起来像这样的表:
survey_answers
id PK
eid
sesid
intvalue Nullable
charvalue Nullable
Run Code Online (Sandbox Code Playgroud)
id =分配给每一行的唯一值
eid =此答案的回答调查问题
sesid =调查"会话"(有关调查时间和日期的信息)id
intvalue =如果是数值,则为答案的值
charvalue =答案的值,如果它是文本表示
这使我能够继续使用MySQL的数学函数来加速处理.
然而,我发现了一个新的挑战:存储具有多个响应的问题.一个例子是:
您喜欢吃以下哪种食物?(选择所有申请)
现在,当我想存储结果时,我不确定处理它的最佳方法.目前,我有一个表只是为了多选项,看起来像这样:
survey_element_options
id PK
eid
value
Run Code Online (Sandbox Code Playgroud)
id =与每行关联的唯一值
eid =与此选项关联的问题/元素
value =该选项的文本值
通过此设置,我将返回的多个选择答案存储在'survey_answers'中,作为在调查中选择的element_options行的逗号分隔id的字符串.(即类似"4,6,7,9")我想如果这确实是最好的解决方案,或者如果它是更实际的创建新表,将持有每个答案选择,然后引用回给定的答案行反过来引用回到元素并最终引用调查.
编辑
对于任何感兴趣的人,这是我最终采取的方法(在PhpMyAdmin关系视图中):
收集多选问题的计数的基本查询如下所示:
SELECT e.question AS question, eo.value AS value, COUNT(eo.value) AS count
FROM survey_elements e, survey_element_options eo, survey_answer_options ao
WHERE e.id = 19
AND eo.eid = e.id
AND ao.oid = eo.id
GROUP BY eo.value
Run Code Online (Sandbox Code Playgroud) 我创建了FTP代码来传输文件.此代码工作正常,但它有时会导致错误500.确切的错误是 -
Error: System.Reflection.TargetInvocationException: Exception has
been thrown by the target of an invocation.
---> System.Net.WebException: The remote server returned an error:
(500) Syntax error, command unrecognized.
at System.Net.FtpWebRequest.CheckError()
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.Net.CommandStream.Abort(Exception e)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetRequestStream()
at ST_772dn22cj49ndfddatee.csproj.ScriptMain.Main()
--- End of inner exception stack trace ---
Run Code Online (Sandbox Code Playgroud)
我注意到加载最大文件时出现错误,即大约290 KB.所有其他文件都不到这个,我也没有例外.我不知道为什么会这样.有人可以告诉我为什么吗?
顺便说一句,如果您发现我的代码或逻辑错误有一些改进空间,那么请同时提及.我不是真的在寻找代码评论,但欢迎.
public void Main()
{
Boolean conditions = true;
if(conditions == true)
{
string fileLocation = "my windows directory";
string fileName = "fileName.extension";
string ftpFolder = @"/ftpFolder/";
Boolean …
Run Code Online (Sandbox Code Playgroud) We're using g++ 4.4.3, and one of our third-party libraries is causing the lovely error
/usr/include/c++/4.4/backward/backward_warning.h:28:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
Since it's a third-party library, I can't fix the problem, so I just want …
我想总结所有时间差异,以显示志愿者的总工作时间.获得时间差的结果集很容易:
Select timediff(timeOut, timeIn)
FROM volHours
WHERE username = 'skolcz'
Run Code Online (Sandbox Code Playgroud)
它给出了按小时计算的时间列表,但是我希望将它总计为总计.
所以如果结果集是:
12:00:00
10:00:00
10:00:00
08:00:00
Run Code Online (Sandbox Code Playgroud)
这将只有40个小时.
这有一种方法可以做:
SELECT SUM(Select timediff(timeOut,timeIn)
FROM volHours
WHERE username = 'skolcz') as totalHours
Run Code Online (Sandbox Code Playgroud)
?
我目前用于C#项目的开发环境是Visual Studio,带有SQL Server数据库并使用VisualSVN连接到我的SVN存储库.要管理我的存储过程,视图等的修订,我将ALTER
脚本保存到我的SVN客户端监视的文件夹中,以便这些文件包含在存储库中.
我已签出一些(现在年纪大了)的职位像这样的(如何保持存储过程等脚本SVN /其他库?以及是否有一个SVN插件,用于SQL Server Management Studio中2005或2008? ),并已经看到了一个推荐这些工具:http://www.red-gate.com/products/sql-development/sql-source-control/和http://www.zeusedit.com/agent/ssms/ms_ssms.html.
由于我很少使用进行大量数据库端编程的项目,这从来就不是一个主要的麻烦(一个文件夹中的十几个脚本有一些命名方案并不需要手动管理),但我刚刚继承了几百个项目视图和1000多个存储过程从未包含在版本控制中.
我的问题是:
其他人管理SQL Server代码版本化的过程是什么?我在这里缺少一个被接受的,聪明的或其他明显的方法吗?我目前倾向于购买上述工具之一 - 但在我这样做之前,我正在寻找社区的建议.
我意识到这可能导致工具推荐而不是代码解决方案,但发布到SO,因为我认为这是适当的群体问这个.
我在部署到远程机器时遇到了麻烦,并将tomcat作为服务安装.我的tomcat用户如下:
<tomcat-users>
<role rolename="manager"/>
<user username="admin" password="admin" roles="tomcat, admin, manager-gui, manager-script"/>
</tomcat-users>
Run Code Online (Sandbox Code Playgroud)
我的settings.xml是:
<settings>
<pluginGroups>
<pluginGroup>org.apache.tomcat.maven</pluginGroup>
</pluginGroups>
<servers>
<server>
<id>tomcat7</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
</settings>
Run Code Online (Sandbox Code Playgroud)
我的pom.xml有以下内容:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<server>tomcat7</server>
<url>http://localhost:8081/manager/text</url>
<warFile>target/editor-${project.version}.war</warFile>
</configuration>
Run Code Online (Sandbox Code Playgroud)
而且我继续在maven控制台的输出上获得401 Unauthorized.你能告诉我我做错了什么吗?
我们正在尝试使用Foolproof验证注释[RequiredIf]
来检查是否需要电子邮件地址.我们还创建了一个枚举,以避免在ViewModel中使用查找表ID.代码如下所示:
public enum NotificationMethods {
Email = 1,
Fax = 2
}
Run Code Online (Sandbox Code Playgroud)
然后在ViewModel中:
[RequiredIf("NotificationMethodID", NotificationMethods.Email)]
public string email {get; set;}
Run Code Online (Sandbox Code Playgroud)
在此Senario中,当电子邮件未填充但选择作为通知类型时,我们不会收到错误.相反,这可以按预期工作:
[RequiredIf("NotificationMethodID", 1)]
public string email {get; set;}
Run Code Online (Sandbox Code Playgroud)
我发现的唯一的另一个参考是:https://foolproof.codeplex.com/workitem/17245
我有一个程序,从数据库中读取大约200万行到List.每行是包含地理坐标等信息的位置.
将数据添加到List后,我使用foreach循环并获取坐标以创建kml文件.当行数很大时,循环遇到OutOfMemoryException错误(但是否则完美地工作).
有关如何处理此问题的任何建议,以便程序可以处理非常大的数据集?kml库是SharpKML.
我还是C#的新手,所以请放轻松!
这是循环:
using (SqlConnection conn = new SqlConnection(connstring))
{
conn.Open();
SqlCommand cmd = new SqlCommand(select, conn);
using (cmd)
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
double lat = reader.GetDouble(1);
double lon = reader.GetDouble(2);
string country = reader.GetString(3);
string county = reader.GetString(4);
double TIV = reader.GetDouble(5);
double cnpshare = reader.GetDouble(6);
double locshare = reader.GetDouble(7);
//Add results to list
results.Add(new data(lat, lon, country, county, TIV, cnpshare, locshare));
}
reader.Close();
}
conn.Close();
}
int count = results.Count();
Console.WriteLine("number of …
Run Code Online (Sandbox Code Playgroud) 我在MySQL的1个表下有2个唯一值.
|id (PK)|varchar(255) UNIQUE|
-----------------------------
| 1 | 1234abcde |
| 2 | 5678fghij |
| 3 | 9012klmno |
Run Code Online (Sandbox Code Playgroud)
我是否必须将UNIQUE varchar设置为PK,或者仍然可以使用auto_incremented id(int)?这是一种好的还是坏的做法?
我有一个非常烦人的错误.在>我的脚本结束后.
<html>
<body>
<h1>Upload file to see previous upload!</h1>
<form action="index.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file">
<br>
<input type="submit" name="submit" value="submit">
</form>
<?PHP
if (isset ($_FILES["file"])) {
$allowedExts = array("jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 1048576)
&& in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0) {
echo "Error: Couldn't upload file!"; …
Run Code Online (Sandbox Code Playgroud) c# ×4
mysql ×4
sql ×3
.net ×1
.net-3.5 ×1
asp.net-mvc ×1
caching ×1
database ×1
deployment ×1
deprecated ×1
enums ×1
foreach ×1
ftp ×1
g++ ×1
generic-list ×1
maven ×1
percona ×1
php ×1
sharpkml ×1
sql-server ×1
ssms ×1
svn ×1
tomcat ×1
tomcat7 ×1
warnings ×1