類似ORM的東西在這裏會很有幫助。我會給你從Django framework的例子。我並不是說你應該特別使用這個,但是它的教程很好地說明了這個概念。
這就是我們的模型類:
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published)
它生成此DB查詢:
BEGIN;
CREATE TABLE "polls_poll" (
"id" integer NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" datetime NOT NULL
);
COMMIT;
然後,您可以輕鬆地查看所有的投票:
class IndexView(generic.ListView):
model = Poll # specifies model
template_name = 'polls/index.html' # specifies HTML template
模板可以看看像這樣:
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
它可以使用自動字段迭代來顯示輸入的數據,而不是。 Django自動選擇適當類型的輸入來匹配數據類型。
現在,當您向Poll
類中添加一個字段時,它會自動傳播到數據庫創建和提取查詢,並且表單將合併新添加的字段。
當然,不同的框架行爲會略有不同,因此您需要在使用前檢查它們。他們通常都會提供解決問題的工具,並調整通用解決方案不足的地方。
感謝鮑爾泰克!我正在使用ASP.NET。凌到SQL(ORM)和反射爲我節省了很多時間。但業務邏輯層仍然需要修改。 – etlds
@etlds我沒有看到爲什麼它不應該能夠在模型更改時自動創建適當的查詢。 –
是的。但是如果我不想讓我的UI層直接調用DAL,我會有BLL。我的BLL將調用自動生成的新查詢。 – etlds