我如何在c#中设计类来表示数据库模型?
给出数据库的以下表和字段,
表:员工
Pk EmpID
Lname
Fname
Adress
Fk DeptID
Run Code Online (Sandbox Code Playgroud)
表:部门
Pk DeptID
DeptName
Location
Run Code Online (Sandbox Code Playgroud)
好的,现在我想在C#中创建2个类,一个用于Employee,一个用于Department.我挂掉的部分是外键.我应该在设计中使用外键作为对象,还是应该在部门的Employee类中添加引用,还是应该在我的Department类中列出员工引用列表,还是应该同时执行这两项操作?我知道如果我使用外键,效率会降低,因为我必须搜索与外键匹配的主键列表,但我可能应该将它们包含在设计中.
如果您想要存储与用户相关的数据localStorage(例如,因为多个用户可以为您的站点使用相同的浏览器),您通常如何处理这种情况?
让我们想象一下,我能够userId在前端识别用户的独特之处.我可能会做以下事情:
// retrieve the data
data = JSON.parse( window.localStorage.getItem( userId ) ) || {};
// persist the data
window.localStorage.setItem( userId, JSON.stringify( data ) );
Run Code Online (Sandbox Code Playgroud)
这是一种天真的做事方式吗?
编辑: 根据@MДΓΓБДL和其他评论稍微考虑之后,让我们假设数据是敏感的.在这种情况下,上面的例子确实是天真的.在这种情况下如何处理敏感数据的任何想法?或许是答案:不要这样做,把它保存在后端?
对于IIS(5.0或更高版本),是否有替代apache的.htaccess指令php_flag和php_value来设置PHP_INI_PERDIR配置值?
谢谢.
有没有一种简单的方法可以将填充添加到jQuery UI Slider的滑块?我希望能够让滑块手柄不能到达杆的两端.所以如果这是常规的左端:
no padding
\/
[]------------------
Run Code Online (Sandbox Code Playgroud)
我希望它在左(和右)端有填充:
padding of 10px for instance
\/
--[]----------------
Run Code Online (Sandbox Code Playgroud)
我在css文件中试过这个:
.ui-slider-horizontal { height: .8em; padding: 0 10px; }
但似乎jQuery UI Slider使用complete(outerWidth())宽度来确定句柄的滑动范围,而不是没有填充的宽度.我也试过破解代码,替换outerWidth()为width(),但它没有做任何事情.
我明确地不想诉诸于设置最小值和最大值的黑客.值应始终按预期工作.
有什么建议?
编辑:
继pkauko的评论之后; 我使用滑块作为在其上方有三个标签的元素:
not very
important important important
----[]-----------[]----------[]----
Run Code Online (Sandbox Code Playgroud)
上图显示了我希望手柄出现的位置,位于标签下方的中心位置.但是酒吧在视觉上需要伸展到边缘.
可能重复:
带有src和内容的脚本标记是什么意思?
我刚看这个页面,关于如何实现Googles +1按钮.当一个实现(解析显式)显示此代码时:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{parsetags: 'explicit'}
</script>
Run Code Online (Sandbox Code Playgroud)
对我来说,这看起来像一个完全匿名的对象,但我可能会弄错.
如果是这样,怎么可能访问这个看似匿名的对象?在写完这个问题后,我突然意识到它可能是通过解析DOM完成的,但这看起来相当荒谬.
那么,这是一个匿名对象吗?如果是这样,这个匿名对象如何被利用?这是我不知道的一些熟悉的技术吗?
或者我只是完全误解了代码,这不是一个匿名的对象吗?
如果视图需要从模型访问数据,您认为控制器应该:
a)将模型传递给视图
b)将模型的数据传递给视图
c); 它不应该是控制器的关注点.让视图直接访问模型以检索数据.只让控制器提供视图所需的一些参数来过滤模型中的数据.
d)这取决于具体情况.
e)以上都不是,但[...]
谢谢
在评论中对用户删除的答案进行了一些辩论后,可能需要澄清.我对MVC架构的看法偏向于Zend Framework(php),其中默认情况下控制器中的操作具有分配给它的默认视图.因此,模型不是决定哪个视图是合适的,而是控制器.你觉得模型应该决定哪种观点合适吗?我认为让视图基于模型构建的唯一方法是让控制器将模型传递给视图.是否还有其他技术可以让视图在不涉及控制器的情况下访问模型?或者让控制器将模型传递给视图是否完美,以便可以根据模型属性构建视图?
我正在开发一个主要基于Zend Framework组件的CMS.此CMS的一些数据库表如下:
site
| id | name |
-------------
locale
| languageCode | regionCode |
-----------------------------
site_locale // link sites with locales
| siteId | languageCode | regionCode | isActive | isDefault |
-------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我有一个名为的模型Site,其中包括以下方法:
getId()
getName()
listLocales() // list all locales for this site
Run Code Online (Sandbox Code Playgroud)
我对如何定义模型的规模化有所了解:
一种选择是从方法返回SiteLocale对象/模型(换句话说,DB表表示)listLocales(),其中这些SiteLocale对象包含以下方法:
getSite() // returns the Site model
getLocale() // returns a Zend_Locale
isActive() // is this locale active for the site this model represents?
isDefault() // …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个可重用的通用cli服务器,该服务器可以在终端会话中进行控制(启动/暂停/恢复/停止)。
到目前为止,我的方法是让我有一个脚本独立地充当控制台(父循环)和服务器(子循环),而不是通过pcntl_fork()-ing,而是通过将proc_open()自身本身作为子进程来实现。
然后,控制台循环通过使用发出信号来作用于服务器循环posix_kill()。
现在,不管这是否是一个明智的方法,我偶然发现了一个奇怪的东西-即,当控制台循环用SIGTSTP信号暂停服务器循环时,服务器循环将不会响应该SIGCONT信号,除非它的while-loop实际上在做一些有用的东西。
这可能是怎么回事?
编辑:
根据注释中的请求,我简化了代码示例。但是,正如我已经担心的那样,此代码可以正常工作。
也许我用类忽略了代码中的某些内容,但是我只是看不到两个示例在例程中的不同之处-对我来说,这两个示例都遵循相同的例程。
还有一个重要的注意事项:在我更复杂的示例中,我尝试不断地写入中的文件loop(),即使暂停了该文件也确实有效。因此,这告诉我循环继续正常运行。在我将其暂停之后,服务器只是不想再响应信号了。
无论如何,这是我之前显示的示例的简化版本,如下所示:
$lockPath = '.lock';
if( file_exists( $lockPath ) ) {
echo 'Process already running; exiting...' . PHP_EOL;
exit( 1 );
}
else if( $argc == 2 && 'child' == $argv[ 1 ] ) {
/* child process */
if( false === ( $lock = fopen( $lockPath, 'x' ) ) ) {
echo 'Unable to acquire …Run Code Online (Sandbox Code Playgroud) 对于我正在开发的 REST API,客户可以注册一家公司,随后需要通过电子邮件进行确认/激活。收到以下示例请求后,将发送一封电子邮件,其中包含激活链接,以激活帐户。
POST /companies HTTP/1.1
<company>
<name>CoolCompany</name>
<email>coolcompany@example.com</email>
</company>
Run Code Online (Sandbox Code Playgroud)
如果上述请求成功(有效数据,电子邮件成功发送),公司资源将保存在数据库中,但只有在/companies/<id>收到确认后(给定适当的授权标头)才可用。
鉴于这种情况,是
HTTP/1.1 202 Accepted
// Perhaps optionally with a Location header,
// of where the resource will be available, as well?
Location: /companies/<id>
Run Code Online (Sandbox Code Playgroud)
适当的回应?或者会
HTTP/1.1 201 Created
Location: /companies/<id>
Run Code Online (Sandbox Code Playgroud)
是更合适的回应?
对于类似于URL缩短器服务的应用程序,我想创建不可猜测的id,你们都熟悉我认为.这是一个这样的id的例子:
在将这些作为主键插入数据库表时,产生这些的最佳(或没有)冲突的风险是什么?
编辑:
Piskvor当然是一个很好的观点.我应该提到在达到36 ^ 6限制之前我意味着最小的碰撞风险.
编辑2
呃,废弃了,他的观点远远超过了当然.嗯.然后,或许(就像我已经在其他地方读过的那样)预先创建一个带有id的表格?当我受到36 ^ 6和非连续约束时,这可能是最有效的技术吗?
php ×3
javascript ×2
.htaccess ×1
base36 ×1
c# ×1
class-design ×1
css ×1
database ×1
granularity ×1
html5 ×1
iis ×1
jquery ×1
jquery-ui ×1
models ×1
mysql ×1
padding ×1
posix ×1
primary-key ×1
rest ×1
signals ×1
slider ×1
sql ×1
unique ×1
while-loop ×1